Wordpress教程丨更新Css文件缓存
Wordpress主题站更新CSS/JS等文件缓存时,我们可以用:wp_enqueue_script 函数进行CSS/JS版本号的定义,实现定义后我们可以在CSS/JS文件更新后得知主题站缓存:
版本号会链接在css/js完整路径的后面,一般在版本号变更后,css/js载入的样式的完整URL也会变更,浏览器发现URL变更会重新请求css/js文件,这样就能达到载入最新的css/js文件。
版本号会链接在css/js完整路径的后面,一般在版本号变更后,css/js载入的样式的完整URL也会变更,浏览器发现URL变更会重新请求css/js文件,这样就能达到载入最新的css/js文件。
但是很多代理软件(比如squid)并不支持”?“号形式的cache,我们在使用反向代理来cache我们的网站时,特别在squid3.0以后,已经开始不对带”?”号的url进行缓存了。所以我们如果要使用squid的缓存功能就必须去掉”?”,更新squid代理商的缓存只能通过修改文件名来实现。
以下我们将介绍在wordpress通过对版本号的控制来修改js/css文件名从而能够在代理软件中达到缓存的目的:
1、在我们的主题代码functions.php文件中添加如下代码:
1、在我们的主题代码functions.php文件中添加如下代码:
/**
* Description: wordpress在代理(squid)中更新css/js文件缓存的方法
* Author:wordpress教程网
* Author URI: http://www.baisheng999.com/
*/
function ds_filename_based_cache_busting( $src ) {
// 管理员的后台css/js文件无需处理
if ( is_admin() )
return $src;
//将版本号添加到文件名中已”.“号来区分
return preg_replace(
'/\.(js|css)\?ver=(.+)$/',
'..',
$src
);
}
add_filter( 'script_loader_src', 'ds_filename_based_cache_busting' );
add_filter( 'style_loader_src', 'ds_filename_based_cache_busting' );
2、 如果你使用的是apache服务器,在你的根目录的.htaccess文件下添加:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(.+)\.(js|css)$ . [L]
</IfModule>
3、如果你是nginx服务器配置如下:
location ~ ^(.+)\.(.+)\.(js|css)$ {
alias .;
}
以上就是关于主题站更新CSS/JS等文件缓存的方法
0条评论