Javascript 控件浏览器';s缓存带有查询字符串的链接或脚本

Javascript 控件浏览器';s缓存带有查询字符串的链接或脚本,javascript,css,caching,Javascript,Css,Caching,我正在寻找一种有效的方法,根据文件(或模块)版本控制每个页面中所有链接(CSS)和脚本的浏览器缓存。我希望每个浏览器首先查看文件的版本(在其位置),如果仍然是相同的版本,请使用缓存,但如果版本已更改,请重新加载文件 如果我使用当前文件版本(或其模块)作为文件位置末尾的查询字符串,浏览器(特别是Firefox)将不会对此文件使用缓存,即使它与以前的请求相同,服务器返回304头。这就是冲击载荷性能 例如: <link rel="stylesheet" type="text/css" media

我正在寻找一种有效的方法,根据文件(或模块)版本控制每个页面中所有链接(CSS)和脚本的浏览器缓存。我希望每个浏览器首先查看文件的版本(在其位置),如果仍然是相同的版本,请使用缓存,但如果版本已更改,请重新加载文件

如果我使用当前文件版本(或其模块)作为文件位置末尾的查询字符串,浏览器(特别是Firefox)将不会对此文件使用缓存,即使它与以前的请求相同,服务器返回304头。这就是冲击载荷性能

例如:

<link rel="stylesheet" type="text/css" media="all" href="Modules/Footer/view/css/footer.css?version=1.01">
<link rel="stylesheet" type="text/css" media="all" href="Modules/Footer/1.01/view/css/footer.css">

我不想根据文件的版本更改文件的物理位置,因为文件存在于静态位置,并且它的版本根据其模块中的某些更新而更改

例如:

<link rel="stylesheet" type="text/css" media="all" href="Modules/Footer/view/css/footer.css?version=1.01">
<link rel="stylesheet" type="text/css" media="all" href="Modules/Footer/1.01/view/css/footer.css">

致:



它会起作用,但不是我想要的。

听起来更像是Firefox中的一个bug。等待什么服务器正在返回一个304?这听起来像。我知道,但如何修复呢?我以前见过这种行为,当我们在URL括号中有不寻常的字符时,我想是的。它们触发了一些不合规格的启发式操作,浏览器拒绝缓存它们。我们将URL的格式更改为只使用“普通”字符,浏览器开始缓存它们。(对不起,我记不起确切的细节。)