首页 > 想问下网站改版的话怎么样让用户的浏览器自动加载新的静态资源

想问下网站改版的话怎么样让用户的浏览器自动加载新的静态资源

之前写的一个站点现在全部改版了,前端也增加了很多图片,js,css等静态文件,但是部署到服务器上之后发现好多效果没有,后来发现是要清空浏览器的缓存才能重新加载新的静态文件,有时候本地开发的时候也会遇到相同的问题,就是修改了一个css或者js文件,需要清空浏览器缓存才可以,想问下有什么方法才能让用户每次都重新加载一边静态资源呢,或者是自动加载新增加的静态资源呢,是不是要加几个meta标签提示浏览器?因为老重新加载所有静态资源会降低网站的访问速度,所以希望大大们给一个能让浏览器自己加载新的静态资源的方法,我看一些线上的网站从来没有提示说让你清空浏览器缓存的,这两天改版,相信前端也是动了些代码的,但是也没提示要用户清空浏览器缓存,所以希望大大们给个方法,多谢~


文件名加上版本号或时间戳


一般我们会给所有的静态资源的链接后面跟一个timestamp,比如xxx.png?t=12345678,每次更新的时候更新这个timestamp(比如用更新的时间) 这样因为url是不同,就不会有缓存的问题了,这样的方法也用于更新CDN上的内容


针对LZ的需求,可以以一定规则生成新的URL(修改文件名是其中一种方式),如:

项目规模大的话,前端这边还需要写一个自动化的部署脚本,一般是配合版本管理工具,自动生成新文件名,并进行CDN分发。

更新的时候,线上同时保留新旧两版静态是有好处的,可以在出现问题时以最快速度回滚到旧版(仅仅需要修改一下引用的url)。


用户量级比较大的话,不建议使用修改query string的方式。

为何?

宽带运营商为了提高速度,可能会在自己某节点服务器上缓存你的文件。如果你的时间戳更新了(style.css?v2),按照HTTP规范,这理应被视作一个新的文件。
但是运营商仍然可能会拿自己的缓存,而不是遵循规范。
有点可恶对不对?这就是我们在用户量极大的情况下侦查到的情况,所以,为了保证更新的文件确定能下发到所有的用户,我们会修改文件名(如图3),而不是仅修改query string。
——余果,全栈工程师相关专栏《计算机科学里最难的事情》。


这个要看情况使用不同策略,比如jquery之类的公共库最好使用cdn,比如
http://www.staticfile.org/
如果网站只是间歇性的改版可以吧资源放到不同文件夹下面,比如/resource/v1/css/... /resource/v2/css/...
如果是持续性改动可以通过脚本在上线前讲文件重命名为hash值,并且修改对应html的引入点
最土的办法就是使用时间戳了,因为不方便维护而且绝大多数情况用不着。
开发时让浏览器不要缓存只需要在服务器上设置响应头 cache-control:max-age=0 就行了


根源上解决:使用新的路径,同时配置CDN。

【热门文章】
【热门文章】