我在 Ubuntu 上运行 apache2。我想像这样设置过期标头。
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
</FilesMatch>
我知道它会将像 www.example.com/images/a.gif 这样的 URL 缓存一年。
我的问题是这样的 URL 怎么办。www.example.com/javascripts/all.js?123456。假设上述 URL 已被缓存。现在,如果我将 URL 更改为 www.example.com/javascripts/all.js?abcdef,浏览器会请求新的 js 文件吗?
基本上,我试图查找浏览器在缓存时是否考虑完整的 URL,包括问号后的数据。
我当前的 vhost 配置如下
<VirtualHost xx.xx.xx.xx:80>
ServerName xxxx
ServerAlias xxxxx
DocumentRoot /home/xxx/current/public
<Directory "/home/xxxx/current/public">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
</VirtualHost>
我假设我可以在标签开始之前放置 ExpiresActive On 和其他语句。
答案1
没关系。根据您的配置,all.js?123456 将请求 all.js 的新版本。您也可以将 ExpiresActiveOn 放在虚拟主机或目录中。