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 – – [12 / Jul / 2014:07:42:13 -0400]“GET /assets/js/compiled/editable_group.js HTTP / 1.1”200 903

问题的原因是什么?如何解决?

PS我会很乐意提供任何细节,日志,configuration等只要告诉我你想看到什么。

好的,在这个问题上find了答案:

CentOS 5.9虚拟机上的Apache不正确地提供修改后的文件

解决方法是将EnableSendfile off到Apacheconfiguration中的<directory>部分。