从 CDN 加载 JS 文件,如何防止浏览器缓存
Loading a JS file from a CDN, how to prevent browser caching?
每隔几个小时(或更短,取决于)我将更新一个javascript文件,该文件将包含一个JSON对象,其中包含将出现在网站上的通知。 这个 JSON 对象是我将定期更新的对象,因此浏览器无法缓存它。
javascript将托管在CDN上,此文件将托管在客户端网站上,例如:
<script src="//example.com/1.7.1/my_file.js"></script>
在这种情况下,如何防止浏览器缓存?
我想最好的方法是让所有客户端都有相同的 javascript 文件,然后发出 ajax 请求来下拉消息? 这样就可以缓存"my_file.js",但 ajax 响应不会缓存。
您可以在路径后添加时间戳my_file.js?time=currentTime
为了保持HTML干净,你可以在另一个本地js文件中添加这样的东西
$("head").append('<script type="text/javascript" src="yourPath?time=' + Date.now() + '"></script>');
或者你可以使用 $.getScript、requirejs 等。
这实际上取决于您使用的 CDN 和可用的功能。一些方法:
- 指示 CDN 将文件缓存大约一个小时,这样它就会每小时自动获取一个新文件(假设有人在请求)。这意味着用户不一定会立即收到更改,但会在您更改后的半小时内收到更改。
- 除此之外,让 CDN 向最终用户发送"无缓存"缓存控制标头。根据 CDN,这只是您的源发送的内容,并且您在 CDN 上使用一些覆盖(或指示 CDN 通过标头缓存它的各种方法之一,例如代理缓存控制)
- 或者,上述版本控制/带时间戳的 URL。这样做的缺点是,它要求您更新对文件的任何引用以包含版本 ID。如果您的页面是自动生成的,这很好。
- 允许 CDN 无限期缓存文件,但利用"清除"或"失效"功能强制 CDN 在下次请求新版本时请求新版本。这主要适用于有理由让文件超过几个小时或一天不更新的情况。
相关文章:
- HTML5音频如何防止浏览器麦克风拾取所有声音
- 如何防止浏览器在历史记录中缓存HTML
- 如何在Javascript执行后防止浏览器锁定
- 如何防止浏览器在浏览浏览器历史记录时卡在Angular路线上
- Javascript:在调用服务器时防止浏览器冻结
- 有没有办法防止浏览器缓存滚动位置和缩放级别等值
- 禁用滚动时悬停以防止浏览器重新绘制
- 如何防止浏览器将状态推送到历史记录中
- 如何防止浏览器用JavaScript替换文本字段中的电子邮件
- 防止浏览器失去对外部应用调用的关注
- 如何防止浏览器打开 href 中指定的链接
- 如何防止浏览器默认行为在按 Cntl(命令)+侧箭头在火狐中
- 从 CDN 加载 JS 文件,如何防止浏览器缓存
- 如何防止浏览器拦截和解释密钥
- 如何防止浏览器调用基本的验证弹出窗口并使用Jquery处理401错误
- 打开和关闭面板时,如何防止浏览器窗口跳回页面顶部
- 如何防止浏览器超时(长PHP脚本)
- ajax如何防止浏览器显示ajax url
- 防止浏览器在重新加载父级时保留iframe url
- 如何防止浏览器将网页保存在缓存中,或每次强制请求新页面