Apache 错误地提供修改后的静态资产:提供过时的文件,其大小已调整为与新文件的大小匹配

Apache 错误地提供修改后的静态资产:提供过时的文件,其大小已调整为与新文件的大小匹配

我在 CentOS VirtualBox 中运行了一个 CakePHP 项目。该网站使用 Apache 2.2.15 提供服务。

文档根文件夹中有 JS 文件。Apache 似乎为这些文件提供服务。

但是当我编辑 JS 文件后,Apache 会提供旧文件。它会修改旧文件的大小以匹配新文件的大小,并提供修改后的旧文件:

  • 如果新文件小于旧文件,则剪切旧文件并提供结果;
  • 如果新文件大于旧文件,它会将符号附加到旧文件并提供结果。

重新启动 Apache 不能解决问题。

我发现让 Apache 提供当前文件的唯一方法是将文件移动到另一个位置。然后 CakePHP 将显示一个漂亮的 404 页面。然后我将文件移回,Apache 将显示文件的当前状态。

但是 i2.2.15t 会将文件冻结在该状态下,再次修改文件后,我将不得不再次重复该技巧。

Apache 日志是干净的,访问日志文件显示以下内容:

172.28.128.1 - - [2014 年 7 月 12 日:07:42:13 -0400] “GET /assets/js/compiled/editable_group.js HTTP/1.1” 200 903

这个问题的原因是什么?我该如何解决?

PS 我很乐意提供任何详细信息、日志、配置等。只需告诉我您想看到什么。

答案1

好的,在这个问题中找到了答案:

CentOS 5.9 VM 上的 Apache 错误地提供修改后的文件

解决方案是将其包含EnableSendfile off<directory>Apache 配置的部分中。

相关内容