Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从CDN加载JS文件,如何防止浏览器缓存?_Javascript_Cdn - Fatal编程技术网

Javascript 从CDN加载JS文件,如何防止浏览器缓存?

Javascript 从CDN加载JS文件,如何防止浏览器缓存?,javascript,cdn,Javascript,Cdn,每隔几个小时(或更少,视情况而定),我将更新一个javascript文件,该文件将包含一个JSON对象,其中包含将出现在网站上的通知。这个JSON对象是我将定期更新的对象,因此浏览器无法缓存它 javascript将托管在CDN上,此文件将位于客户端网站上,如: <script src="//example.com/1.7.1/my_file.js"></script> 在这种情况下,如何防止浏览器缓存 我想最好的方法是让所有客户端都拥有相同的javascript文

每隔几个小时(或更少,视情况而定),我将更新一个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”)。追加(“”)这实际上取决于您使用的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),这使得“无缓存”在某些用例中很好。