搜索
前端 - 如何让Javascript文件更新时让用户获取最新的文件?
PHP中文网
PHP中文网 2017-04-10 14:23:57
[JavaScript讨论组]

一种处理方式是在页面上使用类似..../index.js?v=20140409这样的方式,这样处理会有一个问题,就是每次需要修改页面上的引用js的代码。

有没有什么方法,可以不修改引用js代码达到js文件更新时自动获取最新js的效果?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
迷茫

坏消息是:需要及时获取最新的js文件,必须修改url
好消息是:我们可以用服务器端脚本来让这项工作轻松一些,比如常见的php

    //逻辑
    define('RELEASE_TIMESTAMP', 20140409);
    //页面
    xxx.js?v=<?=RELEASE_TIMESTAMP?>

这样就把所有的JS引用的URL集中在一个地方了,工作稍微轻松一些。接下来我们可以更进一步

    define('RELEASE_TIMESTAMP', filemtime('./timestamp'));

这样只要发布的时候touch timestamp一下就行了,可以不用改代码提交代码了

当然还可以继续牛逼哄哄地搞下去,比如有个下发机制,一个配置中心控制多台线上机器之类的,随意发挥

PHPz

一般有这些方案,覆盖面逐级递增:

  1. Expires
  2. Cache-control
  3. Last-Modified & etag
  4. 修改Query string
  5. 修改文件名/路径名以修改URL

不修改URL,避开4、5的话,可以结合1和3来更新,Expires设置缓存(及失效时间),Last-modified通知更新。

但如果PV达到一定量级,很难保证所有用户都拿到最新的静态(甚至4都不太靠谱,运营商有劫持静态的可能),选择5改URL是必然的事情。

读读这一篇吧,缓存-更新机制,讲得很详细:余果,全栈工程师相关专栏《计算机科学里最难的事情》。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号