客户在浏览器访问一个页面之后,浏览器会缓存一些静态文件,比如:css、js等。当技术人员对这些静态文件修改并传到服务器之后,有时客户端这边访问还是没有效果,必须Ctrl+F5强制刷新多次才有效,这往往因为浏览器缓存了css、js等静态文件所造成,解决浏览器缓存这个问题的方法便是在后面加上版本号,达到实时刷新的效果。
加版本号之前:
加版本号之后:
具体PHP实现代码:
/**
* 给静态文件追加版本号,实时刷新浏览器缓存
* 参数 $filepath 为文件路径
*/
function static_version($filepath)
{
// ROOT_PATH 是当前项目所在的绝对根目录
if (!file_exists(ROOT_PATH.ltrim($filepath, '/'))) {
return false;
}
$http_url = 'http://www.lvxing1788.com' . $filepath;
$parseStr = '';
$headInf = @get_headers($http_url,1);
if (is_array($headInf)) {
$update_time = strtotime($headInf['Last-Modified']);
$type = strtolower(substr(strrchr($http_url, '.'), 1));
switch ($type) {
case 'js':
$parseStr .= '<script type="text/javascript" src="' . $http_url . '?ver='.$update_time.'"></script>';
break;
case 'css':
$parseStr .= '<link rel="stylesheet" type="text/css" href="' . $http_url . '?ver='.$update_time.'" />';
break;
case 'ico':
$parseStr .= '<link rel="shortcut icon" href="' . $http_url . '?ver='.$update_time.'" />';
break;
}
}
return $parseStr;
}
html页面调用方式:
{php}echo static_version('/template/common/css/index.css');{/php}