我读到最好将我的文件命名为“test.v01.css”而不是“test.css?v=01”,因为一些代理忽略了 CGI 参数部分。
问题是:
最简单的方法是什么?(对于所有以“.js”和“.css”结尾的文件)
我正在使用 PHP 和 Apache。
我读到最好将我的文件命名为“test.v01.css”而不是“test.css?v=01”,因为一些代理忽略了 CGI 参数部分。
问题是:
最简单的方法是什么?(对于所有以“.js”和“.css”结尾的文件)
我正在使用 PHP 和 Apache。
.ht 访问:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s # Make the file doesn't actually exist
RewriteRule ^(.*)\.[\d]+\.(css|js)$ $1.$2 [L] # Strip out the version number
php:
function versioning($file)
{
if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
return $file;
$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}
用法:
<link rel="stylesheet" href="<?=versioning('/stylesheet/base.css')?>" type="text/css" />
结果:
<link rel="stylesheet" href="/stylesheet/base.94857365432.css" type="text/css" />