自动改变CSS,JS版本

在雅虎工程师,史蒂夫Souders 的高性能网站建设 中,有很多条关于网站性能优化的建议 ,其中第3条建议 您使用树立了一个Expires头的静态文件(图片, CSS和JavaScript ),实施Expires头很简单,在您的.htaccess 的文件,您可以使用下面的代码

#Far Future Expires Header
<FilesMatch "/.(gif|png|jpg|js|css|swf)$">
    ExpiresActive On
    ExpiresDefault "access plus 10 years"
</FilesMatch>


作者指出:

Keep in mind, if you use a far future Expires header you have to change the component’s filename whenever the component changes. At Yahoo! we often make this step part of the build process: a version number is embedded in the component’s filename, for example, yahoo_2.0.6.js.

要生成像yahoo_2.0.6.js可以按照下面的方法:

第一步,建立一些可规则重写的存储模块,一边存储文件的版本号,因此还是在.htaccess的文件中加入下面的代码

#Rules for Versioned Static Files
RewriteRule ^(scripts|css)/(.+)/.(.+)/.(js|css)$ $1/$2.$4 [L]

然后写一个PHP函数来检查文件的最后修改日期,然后将服务器的修改时间作为版本号

<?php
function autoVer($url){$path = pathinfo($url);
$ver = '.'.filemtime($_SERVER['DOCUMENT_ROOT'].$url).'.';
echo $path['dirname'].'/'.str_replace('.', $ver, $path['basename']); }
?>

然后我们可以将这个函数包含到页面中

include($_SERVER['DOCUMENT_ROOT'].'/path/to/autoVer.php');
<link rel="stylesheet" href="<?php autoVer('/css/structure.css'); ?>"
type="text/css" />
<script type="text/javascript" src="<?php autoVer('/scripts/prototype.js'); ?>">
</script> :include($_SERVER['DOCUMENT_ROOT'].'/path/to/autoVer.php');
<link rel="stylesheet" href="<?php autoVer('/css/structure.css'); ?>"
type="text/css" />
<script type="text/javascript" src="<?php autoVer('/scripts/prototype.js'); ?>">
</script>

然后经过解析之后在页面文件看到的HTML代码将会是

<script type="text/javascript" src="/prototype.197993206.js"></script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值