温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

讨厌的浏览器缓存

发布时间:2020-08-10 14:58:59 阅读:777 作者:BoyTNT 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

浏览器出于性能考虑,对js/css一类的静态资源,并不是每次都向服务器询问此资源是否有更新,各位一定都有这样的经历:明明服务器上的脚本更新了,但抓包发现浏览器根本没有发请求询问,直接就使用了本地的缓存,结果导致蹦了脚本错误提示,非要F5甚至Ctrl+F5强制刷新一下才好。

页面我们可以强制浏览器不缓存,但资源不受我们控制,目前可行的方法就是加后缀,每次资源有更新时就变换这个后缀,让浏览器认为它是新资源。比如用版本号做后缀,这样:

<script type="text/javascript" src="../scripts/core.js"></script> 改为 <script type="text/javascript" src="../scripts/core.js?115"></script> 

不过缺点也是显而易见的,维护起来太麻烦了,很容易漏,除非你有合适的发布工具来干这件事。

换一个方法,用资源的最后更新时间做后缀,只要写一个公共方法就好了,以ASP.Net为例:

<script type="text/javascript" src="<%= UI.Get("../scripts/core.js") %>"></script> 
using System; using System.IO; using System.Web;  namespace Test.WebUI {     public class UI     {         public static string Get(string url)         {             return string.Format("{0}?{1}", url, File.GetLastWriteTime(HttpContext.Current.Server.MapPath(url)).Ticks);         }     } } 

这下终于解脱了。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×