Javascript 缓存js和css文件

Javascript 缓存js和css文件,javascript,php,css,caching,Javascript,Php,Css,Caching,我注意到许多网站的js和css文件都附带了一个GET参数。因此,文件变得像:path/to/my.css?v=49或path/to/my.js?v=1.4 我做了一些研究,我知道它用于文件缓存,所以浏览器不会每次请求都再次下载文件。我试图理解它到底是如何工作的,但老实说,我不知道 我看到一些帖子说,你告诉浏览器每隔几分钟下载一次新文件,但我认为这可能有点棘手,因为如果我推动一项重大更改,甚至是一个关键的bug修复,而用户试图访问该网站,但他的浏览器仍在使用缓存文件,即使bug已修复,他也无法访问

我注意到许多网站的js和css文件都附带了一个GET参数。因此,文件变得像:path/to/my.css?v=49或path/to/my.js?v=1.4

我做了一些研究,我知道它用于文件缓存,所以浏览器不会每次请求都再次下载文件。我试图理解它到底是如何工作的,但老实说,我不知道

我看到一些帖子说,你告诉浏览器每隔几分钟下载一次新文件,但我认为这可能有点棘手,因为如果我推动一项重大更改,甚至是一个关键的bug修复,而用户试图访问该网站,但他的浏览器仍在使用缓存文件,即使bug已修复,他也无法访问该文件。他将不得不等待,直到他的浏览器将从服务器中提取新文件,而不是使用缓存版本。显然,我假设用户不知道何时会推送bug修复,何时浏览器会拉取新文件,或者如何在不等待浏览器的情况下手动拉取新文件


我想了解一下这种缓存方法,以及如何克服上面提到的问题。

这是一种非常简单的机制。每次更改js或css文件时,都必须更改此v参数


您可以在此处阅读如何自动执行此操作:

将此参数添加到文件将导致浏览器重新下载。通过更改关键修复上的参数,您将实现每个客户端重新下载文件,即使已缓存

通过给文件提供一个随机参数,可以在每次重新加载时强制下载。请注意,这将增加您的流量和加载时间

<link rel="stylesheet" type="text/css" href="style.css?v=<?php echo rand(); ?>" />

这是否意味着浏览器将自动缓存css/js文件,并且不会每次请求都下载它们?谢谢您的回答。默认情况下,服务器将从中缓存文件多长时间?服务器端没有任何默认缓存时间,您必须使用特定的机制,但服务器可以设置头缓存控制,并告诉所有代理和浏览器缓存响应的最长时间。更多信息,请参见: