对不起,这似乎与其他一些问题非常相似,但我已经查看了所有可以看到的相关帖子,但它们似乎没有像我做;-)无法让浏览器缓存内容
问题是,我无法获得客户端缓存的.js,.css和图像从我的Apache2服务器上工作(我有两个Ubuntu Apache/2.2.8和一个WAMP Apache在Windows下)。如果通过将Header Unset命令放入我的虚拟主机配置文件中,然后补充Caching指令(请参见下文)来关闭此功能,则可以使用默认设置,即可获得良好的ETag风格的服务器主导缓存(304响应)它似乎并没有被浏览器所尊重。
我可以看到使用Firebug浏览器知道一个缓存文件有效了几个小时,但它仍然要求它。
任何有关如何调试的提示都会受到欢迎。
主机配置的相关部分如下所示:
<VirtualHost *:80>
DocumentRoot "C:/Projects/A2C/branches/CR7"
ServerName *
ServerAlias localhost ecomsvr0.dmclub.net
ErrorLog "c:\log\a2c.log"
CustomLog "c:\log\a2c-access.log" common
<Directory "c:\projects\A2C\branches\CR7">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
ExpiresDefault A36000
Header Set Cache-Control "max-age=7200"
Header Unset Etag
Header Unset Last-Modified
</Directory>
</VirtualHost>
我故意删除Last-Modified/ETag,因为我不想要条件请求 - 它们比拥有(比如说)1小时缓存更昂贵。理想情况下,我们都有,但我明白他们不能很好地协作(我想这是由于他们的独立性)。不过,我会尝试redbot的东西。干杯。 – user648498 2011-03-08 09:16:10
刚刚尝试过redbot,发现Firebug向我展示了完全相同的响应。该URL是http://ecom0.edge5.dmclub.net/test/integration/ajl/cachetest.html,我的愿望是获得简单的客户端缓存没有条件请求(我们试图减少延迟) – user648498 2011-03-08 09:23:38
谢谢发布该网址。现在我的FF缓存响应并从缓存中提供,而不需要重新验证。标题包括两个验证器现在(我假设你已经改变了配置)。有条件的请求:当资源不再新鲜时,它们仅由浏览器发送,但仍在缓存中。所以你不应该通过增加一个验证器来放弃任何东西。如果您的后端无法使用HTTP/304(未修改)响应条件请求,则只需返回一个正常的200响应。 – alienhard 2011-03-08 13:44:57