Apache缓存JavaScript资源?

5

不久前,我在处理JavaScript资源时遇到了一些问题。当我对它们进行更改时,更改并没有生效,文件会变成无效的JavaScript(Firebug会抛出错误和警告)。

我注意到我的更改并没有出现,而且特殊字符被添加到文件末尾。经过更深入的挖掘,我发现这些特殊字符恰好是我编辑的字符数。

原始代码:

$(document).ready(function(){
     alert('what');
});

添加一行,应该像这样:

$(document).ready(function(){
     alert('what');
     alert("what's going on?!);
});

呈现效果如下:
$(document).ready(function(){
     alert('what');
});��������������������������

当我进行研究时,发现修改apache配置文件/etc/httpd/conf/httpd.conf并注释掉EnableSendfile off可以解决问题。
然而...
现在问题又出现了,但是apache配置没有改变。
请帮忙。我目前的解决方法是重命名文件,查看新文件并将其重新命名;这让我非常烦恼。
我正在vagrant box上开发,CentOS 6,PHP 5.3 / apache 2 - 原始解决方案可以在此处找到:Shared folder in VirtualBox for Apache
不幸的是,这种方法似乎不再起作用。

你有检查过不可见字符,例如Windows换行符、制表符/空格吗? - Chris Whittington
是的,该文件是干净的。只有新更改被转换为这些特殊字符。 - joseym
你可以使用一些缓存破解技巧,例如 <script type='application/javascript' src='somefile.js?v=somefileversion'></script>。但由于我对 Apache 不熟悉,建议您等待更好的建议。 - Prusse
Prusse - 缓存破解似乎无法正常工作,看起来是文件提供的方式出了问题。 - joseym
1
可能是Vagrant/VirtualBox/Apache2奇怪的缓存行为的重复问题。 - kenorb
1个回答

7

经常出现EnableSendfile On导致的故障,启用EnableMMAP也会导致类似的问题。尝试关闭它。您提到使用 Vagrant 中的 CentOS,但没有提及主机操作系统。难道是 Windows 吗?


2
你是我的英雄。这修复得非常好!主机设备是Mac OSX。 - joseym

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接