Jon*_*ett 5 javascript firefox caching firefox6
我想要做的是在javascript路径的末尾添加一个查询字符串,以便每当我的应用程序更新到新版本时,都会下载javascript.但是,只要查询字符串相同,我希望它继续使用缓存版本而不执行http请求来检查脚本是否已更改.
我在PHP中完成此操作的方法是从CVS标记中读取.当我构建HTML输出时,我读取CVS标记并使用它附加到javascript路径的末尾,以便它创建一个如下所示的脚本标记:
<script src="javascript/messages/shipments.js?TPRSAPPS-DEV2_090828145712237-BRANCH" type="text/javascript"></script>
只要应用程序没有更改,标记将保持不变,因此查询字符串也将保持不变.浏览器应该缓存JS并且根本不做网络请求,因为过期日期是远期的.每次更新应用程序时,该查询字符串都将更改,浏览器应下载该查询字符串.
这在IE8中很有用.我的问题是Firefox.Firefox缓存文件,但下次加载页面时,Firebug会显示304响应,表明它仍然对该文件发出网络请求,然后发现它没有更改.
所以我的问题是,当有查询字符串时,firefox是否会忽略javascript的expires头和缓存?
相关:firefox决定不缓存什么? 显然Rails做了类似的事情.但这不能回答我的问题.
以下是我回复此文件的回复:
https://appdev.prsx.net/~jhargett/PRSApps-Motorlog/javascript/menuReader.js?TPRSAPPS-DEV2_090828145712237-BRANCH-DIFFERENT
HTTP/1.1 304 Not Modified
Date: Mon, 03 Oct 2011 18:35:26 GMT
Server: Apache/2.2.3 (Red Hat)
Connection: close
Etag: "179010-3f8-49a9a74334200"
Vary: Accept-Encoding
Firebug中的Cache选项卡说:
Last Modified   Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Last Fetched    Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Expires Fri Oct 28 2011 18:33:31 GMT-0500 (Central Daylight Time)
Data Size   345
Fetch Count 12
Device  disk
Firefox使用逻辑来决定是否在给定缓存响应的情况下进行条件GET,如下所示:
因此,对于您的情况,假设您实际设置了200响应的expires或max-age信息,则不应该有条件GET.
也就是说,尝试跟踪Firefox的HTTP信息的一些工具实际上会影响重新验证行为,因此您可能会遇到这种情况.
我建议按照https://developer.mozilla.org/en/HTTP_Logging中的步骤创建一个日志,如果你能找到正确的日志部分(搜索",那么它将顺便告诉你为什么要进行条件GET) nsHttpChannel :: CheckCache输入"用于从实现上述逻辑的函数进行日志记录".
| 归档时间: | 
 | 
| 查看次数: | 3324 次 | 
| 最近记录: |