reloadJs请问,重启web服务器浏览器会重新加载js吗?

发布于 2021-12-01 05:41:54 字数 1150 浏览 857 评论 18

最近做项目要升级,但是又怕有的浏览器没有及时更新js,导致业务出错;请教了一个比我多工作1年的同事;他说重启服务器,浏览器会重新加载js文件,真的是这样吗?

(刚才看了下,发现开源中国首页很多js文件url都加了?t=14435345454这种时间戳加参数的形式,看来这种改变路径以达到重新请求的方式越来越流行了。但是我还是要科普一下,以便大家看到这篇文章时,可以同时了解下缓存机制。

网上搜的: 
    Last-Modified:服务器上文件的最后修改时间 
    Etag:文件标识 
    Expires:本地缓存目录中,文件过期的时间(由服务器指定具体的时间) 
    Cache-control:本地缓存目录中,文件过期的时间(由服务器指定过期的间隔时间,由于浏览器根据间隔生成具体的时间 )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(18

回忆凄美了谁 2021-12-04 20:21:50

加个版本号,更新的时候版本号一起更新就不会有这样的问题。

多情癖 2021-12-04 20:21:49

变版本号,整那些没用的干啥 一个个还都长篇大论的

高跟鞋的旋律 2021-12-04 20:21:42

回复
国内百度的FIS3,是一个一站式的解决方案。搞定的话,基本前端所有的构建都没有问题了。如果只是手机中那种单页面应用,直接用webpack这个打包工具也可以,基于node。

月亮是我掰弯的 2021-12-04 20:21:42

可否具体讲下有哪些工具或者思路能自动完成这个?

筱果果 2021-12-04 20:21:33

回复
谢谢,我研究下

秉烛思 2021-12-04 20:19:21

文件名不能随便改,改超链接参数就可以了。

毁梦 2021-12-04 20:08:44

回复
文件名不能随便改是因为打包时依赖做的不好,你看互联网这些大站,都是文件名md5,变化的时候直接生成一个新文件,这样的话非常安全,可以绕过所有的缓存系统。

灵芸 2021-12-04 19:54:09

不一定,要看你webserve的设置。

如果设置了资源立刻过期(Cache-Control:max-age=0),那么浏览器每次请求都不会走缓存,都是去源服务器请求数据。

如果设置了cache时间大于0,那么浏览器会先判断是否过期再去获取资源。没有过期的话直接从浏览器缓存获取。

如果资源已过期,同时设置了etag,那么浏览器会对比etag,发现etag没有变化,那么就会直接返回304+空的response body,这样仅仅有http头部的传输消耗。

最好的方式就是上线时采用构建工具,自动查看依赖,修改变化过文件的文件名,这样就不用关心客户端的缓存问题,因为只要是变化的文件,最终上线的时候,文件名都变了。上线的时候先上资源文件,再上html,一点问题都不会有。

疾风者 2021-12-04 18:53:44

可以增加时间戳,比对下嘛,

秉烛思 2021-12-04 18:14:04

Last Modified的前提是浏览器要发请求到服务器判断版本,这就是一个延迟。如果用文件名带版本号的机制,在http设置js的超时时间很长后,这样第二次加载的时候就直接从浏览器缓存拿起来,完全没有延迟了。

风苍溪 2021-12-04 17:36:00

回复
说明你们的版本管理太烂

晚风撩人 2021-12-04 08:16:08

回复
我修改的是超链接路径,跟服务器换和负载均衡扯上什么关系了。

岁吢 2021-12-04 07:07:05

回复
时间戳手动改?一般都是读磁盘上文件修改时间吧。那这就推倒出我刚才说的那些问题了。

反目相谮 2021-12-04 03:31:28

回复
其实我是在回
@gqy2468 ,没有在讨论你的话题~~~

灵芸 2021-12-03 23:45:43

回复
你们讨论的那么热烈,我就不插话了

少女情怀诗 2021-12-03 11:25:27

js是客户端脚本,和web服务器重启无关,你要让浏览器重新加载js可以考虑修改js的url,后面加个时间戳,比如http://www.oschina.net/js/2012/jquery-1.7.1.min.js?t=1451964198000

柒夜笙歌凉 2021-12-03 00:07:54

说的好,网上搜的: Last-Modified:服务器上文件的最后修改时间 Etag:文件标识 Expires:本地缓存目录中,文件过期的时间(由服务器指定具体的时间) Cache-control:本地缓存目录中,文件过期的时间(由服务器指定过期的间隔时间,由于浏览器根据间隔生成具体的时间)

深巷少女 2021-12-01 13:23:14

你要好好研究下HTTP协议中header里的几个参数:

Cache-Control,  Expires

Etag, Last-Modified

这两组理解后就知道和web服务器重不重启根本没有任何关系

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文