如果路径中有查询字符串,Firefox是否会缓存javascript并在没有请求的情况下使用它?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如果路径中有查询字符串,Firefox是否会缓存javascript并在没有请求的情况下使用它?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2437字,纯文字阅读大概需要4分钟。
内容图文
我想要做的是在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头和缓存?
相关:what does firefox decide not to cache?
显然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,如下所示:
>如果存在相关的Vary标头,请重新验证.
>如果此请求应从缓存强制加载,请不要重新验证.
>如果此请求具有“始终验证”标志,请重新验证.
>如果此请求具有“never validate”标志,则仅在这是无存储响应或SSL无缓存响应时重新验证.
>如果响应状态代码不可缓存或响应为no-cache或
无存储或如果到期时间早于响应日期,则重新验证.
>如果存在查询参数且响应没有明确的Expires或max-age,请重新验证.
>如果响应过期时间是过去的,则重新验证(除非“仅设置每个会话用户首选项重新验证一次”).
因此,对于您的情况,假设您实际设置了200响应的expires或max-age信息,则不应该有条件GET.
也就是说,尝试跟踪Firefox的HTTP信息的一些工具实际上会影响重新验证行为,因此您可能会遇到这种情况.
我建议按照https://developer.mozilla.org/en/HTTP_Logging中的步骤创建日志,如果你能找到正确的日志部分(从函数中搜索“nsHttpChannel :: CheckCache enter”),它会顺便告诉你为什么要进行条件GET.实现上述逻辑).
内容总结
以上是互联网集市为您收集整理的如果路径中有查询字符串,Firefox是否会缓存javascript并在没有请求的情况下使用它?全部内容,希望文章能够帮你解决如果路径中有查询字符串,Firefox是否会缓存javascript并在没有请求的情况下使用它?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。