提供使用jquery比较缓存和应用程序中的js文件

时间:2017-12-21 06:10:32

标签: javascript jquery caching browser-cache

我的应用程序中有几个js文件。当我更改这些文件中的任何内容时,我必须清除浏览器缓存以查看我的更改。为了避免这种情况,我使用了这个

<script type="text/javascript" src="js/main.js?cacheBust=20"></script>

但这似乎不起作用 我不想在URL中使用版本控制

<script type="text/javascript" src="js/main.js?v=1.2.3"></script>

问题是,如果我忘记更改版本,浏览器仍会使用旧的js文件 我只想知道是否有任何简单的方法,将当前浏览器的缓存js文件与应用程序的js文件进行比较。如果有任何更改,则加载新文件,否则使用旧文件文件。

我正在使用jquery和bootstrap处理ASP.net应用程序。我的应用程序中没有服务器端代码。所以如果有人能在客户端建议任何解决方案,我将不胜感激。谢谢你提前帮助!

1 个答案:

答案 0 :(得分:0)

禁用用于开发的缓存

客户端

在Chrome中在'networ'k选项卡上打开开发人员工具(f12),从工具栏中选中'禁用缓存'。请注意,只要开发人员工具处于打开状态,这将只是一个有效状态。现在重新加载页面并注意页面加载而没有缓存。

enter image description here 在Firefox 中,打开开发人员工具,单击设置cog,转到“高级设置”并选中“禁用HTTP缓存”。 (与我认为的镀铬相同的通知)

服务器端

根据哪种服务器设置,您可以设置包含各种选项的标题,例如到期日期以及在浏览器获得新版本时告诉浏览器。

node.jsdocs中,它指出了以下标题选项: if-modified-since if-unmodified-since last-modified

nginx - proxy_cache_revalidate指示NGINX在从源服务器刷新内容时使用条件GET请求。如果客户端请求缓存但是由缓存控制头定义的过期项,则NGINX在其发送到源服务器的GET请求的头中包含 If-Modified-Since 字段。这样可以节省带宽,因为只有在NGINX最初缓存文件时附加到文件的 Last-Modified 标题中记录的时间后,服务器才会发送完整项目。

appache如果响应的状态为200(OK),则响应中还必须至少包含一个“Etag”,“ Last-Modified ”或“< em> Expires “标头,或”Cache-Control:“标头的max-age或s-maxage指令,除非CacheIgnoreNoLastMod指令已被用于另外要求。