在开发WordPress 主题的时候,如果频繁更新主题的CSS、JS文件但主题已经上线,如何让访客的浏览器获取最新的CSS、JS文件而非等到浏览器删除缓存后?下面就介绍一个简单的方法。
版本号参数
相信有过开发经验的童鞋都知道是用版本号参数控制。即原来比如说css 文件路径代码是如下面的:
http://xxx.com/wp-content/themes/Devework/style.css
那么如果更新了css 文件,可以为此添加版本号,即改为:
http://xxx.com/wp-content/themes/Devework/style.css?v=2
但是,在WordPress 中如果每修改一次就要手动更新版本号那太累了。如何让版本号自动更新(即?v=后面的数字自动更新)?
时间戳
想必你也知道了,用时间戳代替版本号。在WordPress 中,用时间戳代替版本号的处理方式可以更加方便一点。
http://xxx.com/wp-content/themes/Devework/style.css?v=<?php echo time(); ?>
或者:
http://xxx.com/wp-content/themes/Devework/style.css?v<?php echo filemtime($pathToCSS); ?>" />
WordPress 中呢?
有过WordPress 主题开发经验的都知道,WordPress 中引用主题的styl.css 文件的路径是直接使用函数<?php bloginfo('stylesheet_url');?>的,这么一来,在header.php 中的路径代码如下:
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen, projection" />
虽然手动修改路径也可以,但我们并不推荐该方法,你可以hook一下该wp_enqueue_style() 函数。
将下面的代码添加到主题的functions.php 文件下即可为styl.css 文件添加时间戳版本号:
add_action( 'wp_enqueue_scripts', 'add_styles' );
function add_styles()
{
$css_file = get_stylesheet_directory() . '/css/style.css';
wp_enqueue_style( 'css-file', get_stylesheet_directory_uri().'/css/style.css', NULL, filemtime($css_file) );
}
js文件的话依照上面的照搬即可实现。
如此一来,就能保证浏览器每次访问都是最新的css、js文件,而非采用缓存
其实就是在css或js后面带个随机参数了,当然我们也可以设置网页不缓存
方法一:在<head>标签里增加如下meta标签。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
HTTP1.1中启用Cache-Control 来控制页面的缓存与否,这里介绍几个常用的参数:
no-cache,浏览器和缓存服务器都不应该缓存页面信息;
public,浏览器和缓存服务器都可以缓存页面信息;
no-store,请求和响应的信息都不应该被存储在对方的磁盘系统中;
must-revalidate,对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时;
Last-Modified只页面的最后生成时间,GMT格式;
Expires过时期限值,GMT格式,指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息;