Javascript 从CDN加载JS文件,如何防止浏览器缓存?
每隔几个小时(或更少,视情况而定),我将更新一个javascript文件,该文件将包含一个JSON对象,其中包含将出现在网站上的通知。这个JSON对象是我将定期更新的对象,因此浏览器无法缓存它 javascript将托管在CDN上,此文件将位于客户端网站上,如:Javascript 从CDN加载JS文件,如何防止浏览器缓存?,javascript,cdn,Javascript,Cdn,每隔几个小时(或更少,视情况而定),我将更新一个javascript文件,该文件将包含一个JSON对象,其中包含将出现在网站上的通知。这个JSON对象是我将定期更新的对象,因此浏览器无法缓存它 javascript将托管在CDN上,此文件将位于客户端网站上,如: <script src="//example.com/1.7.1/my_file.js"></script> 在这种情况下,如何防止浏览器缓存 我想最好的方法是让所有客户端都拥有相同的javascript文
<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”)。追加(“”)代码>这实际上取决于您使用的CDN和可用的功能。一些方法:
- 指示CDN将文件缓存大约一小时,这样它将每小时自动获取一个新文件(假设有人请求)。这意味着用户不一定会立即得到更改,而是在您更改后的半小时内
- 同时,让CDN向最终用户发送一个“无缓存”缓存控制头。根据CDN的不同,这将是您的源站发送的内容,您可以在CDN上使用一些覆盖(或通过头指示CDN缓存它的各种方法之一,如代理缓存控制)
- 或者,使用上述版本控制/时间戳URL。这样做的缺点是,它要求您更新对文件的任何引用,以包含版本id。如果您的页面是自动生成的,则可以李>
- 允许CDN无限期地缓存文件,但利用“清除”或“无效”功能强制CDN在下次请求时请求新版本。如果您有理由让文件在几小时或一天内不更新,则这将主要适用李>
您可以在url的末尾添加一个时间戳…@brso05您应该将其作为答案。它甚至不需要是时间戳。一旦任何GET参数发生更改,缓存的版本将被丢弃。如果将$.ajax()
与选项缓存:false
一起使用,jQuery将使用&
。Font awesome使用参数v=4.5.0
。StackOverflow向每个文件添加一个v=
,谢谢您的回答。这是一件显而易见的事情,但我还是要说明:如果使用了CDN,并且像所有CDN一样,它有一个清除选项,那么使用“无缓存”是一个好方法(取决于您的站点和用户网络),这与要求浏览器缓存数月/年/永久相反。CDN完全改变了缓存的方法,因为它被认为是快速的,无处不在(许多POP),这使得“无缓存”在某些用例中很好。