2

我已经尝试过这些?ver=478459东西来帮助防止浏览器缓存一些文件,如 CSS、图像、JavaScript。自从我意识到它只有这么有用。似乎不是每次都有效。例如,我有时必须使用 VPN 进行工作,无论出于何种原因,即使更改文件末尾的参数(如上述文件)也会保留在缓存中,直到我清除它。我认为参数可能由于某种原因没有粘住,因为我正在通过代理运行。但是,情况似乎也并非总是如此。

反正。我试图弄清楚,如果有一种方法可以通过 htaccess 为我的 js、css、img 文件提供 rewrite_rule,如果提供的 URL 是我不知道的,可以说

/scripts/jquery/__ver<version number>__/filename.js
/scripts/__ver<version number>__/filename2.js
/scripts/3.0.x/__ver<version number>__/filename2.js
/styles/jquery-ui/__ver<version number>__/filename.css
/styles/__ver<version number>__/filename2.css
/img/__ver<version number>__/something.png
/img/dir/dir/dir/__ver<version number>__/something-else.png

__ver<version number>__本质上,重写规则正在专门寻找这个,并且<version number>是 3 点版本控制逻辑或某种 md5 .. 或者任何一种方式基本上都在寻找_ver*_

当找到它时,重写规则将删除它并使用没有该部​​分的路径

4

2 回答 2

6

您可以在 .htaccess 中为选定的文件扩展名显式禁用缓存:

<FilesMatch "\.(png|jpe?g|gif|js|css)$">
   FileETag None
   <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Tue, 14 Jan 1975 01:00:00 GMT"
   </ifModule>
</FilesMatch>
于 2013-09-10T17:12:46.990 回答
2

像这样的东西怎么样:

RewriteEngine On
RewriteRule ^(.*)__ver([0-9]+)__(.*)$ /$1$2?ver=$1 [L,QSA]

您可以将其添加到文档根目录中的 htaccess 文件中,它会删除__ver*__URI 的一部分并添加ver=查询字符串参数。

于 2013-09-10T17:12:10.097 回答