如何使用php脚本给html中引用的js和css路径打上版本号

在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、js等,而不必从你的服务器读取,这样在一定程度上加快了网站的打开速度,又可以节约一下你的服务器流量。

具体文字说明不给大家多说了,下面通过代码实例给大家讲解。

比如

<link rel="stylesheet" type="text/css" href=#>

中的href和src加上版本

<link rel="stylesheet" type="text/css" href=#>

当然如果不是前后端 分离得干干净净的,就没必要这么额外的这样自己在写个脚本去打版本。

打版本的好处:

解决外部引用文件实时更新问题。比如

pc端上主要体现在 iframe中的外部引用文件不会实时更新。

wap端上部分app也是比如微信。 如果你的网页是嵌到自己的app,那也更不用说了。

用php写了个类

//生成版本
//清除版本
class ReplaceVersion{
 protected $filePostFixs = array();
 protected $versionName = null;
 protected $version = null;
 protected $path = null;
 /**
  * @param mixed $configs 
  * @param [type] $profix [description]
  * @param [type] $path  [description]
  */
 public function __construct($configs, $profix, $path){
  if (!$this->isCanRun()) {
   $this->error('必须在内网环境 10.10.0开头才可运行'); //exit;
  }
  $this->setVersion($configs);
  $this->setFilePostFix($profix);
  $this->path = $path;
 }
 protected function isCanRun(){
  if (strpos($_SERVER['HTTP_HOST'], '10.10.0') !== false) {
   return true;
  }
  return false;
 }
 /**
  * 匹配到script节点
  * @param array $match 匹配到的script
  * @return string 处理好的script
  */
 protected function callbackScript($match){
  //["<script src="../js/config.js?is=new"></script>", "../js/config.js", "?is=new"]
  /*/<script.*?src=\"(.*?)(\?.*?|\?)?\".*?><\/script>/*/
  $str = $match[0];
  $pattern = '/(<script.*?src=\")(.*)?(\"><\/script>)/';
  return $this->callbackMatch($str, $pattern);
 }
 /**
  * 匹配到css节点
  * @param array $match 匹配到的css
  * @return string 处理好的css
  */
 protected function callbackCss($match){
  // '<link rel="stylesheet" type="text/css" href=#>

使用:

$dir  = __DIR__;
$is_clean = false;
//$is_clean = true;
//第一个参就是版本信息, 第二个就是要匹配的文件后缀, 第三个是要匹配的目录或者文件
if ($is_clean) {//清除版本
 $configs = 'eslc-wap';
 $replaceObj = new ReplaceVersion($configs, array('html'), $dir);
 $replaceObj->clean();
}else{//添加或替换版本
 $configs = array('eslc-wap' => '1.0.1');//也可以写成 $configs = 'eslc-wap, 1.0.1';
 $replaceObj = new ReplaceVersion($configs, array('html'), $dir);
 $replaceObj->replace();
}

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
在php中设置session有很多方面包有给session设置值或直接设置过期、失效和有效期,下面小编来给大家给各位朋友介绍怎么使用。 我们先来看看在php.ini中session怎么设置,打开 php.ini,查找Session设置部分中以下一项,代码如下: session.save_path = "N;/path" session.save_path = "C:/Temp" #此处以你自己设定的路径为准 这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,后面的
一、制作思路 由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,简单的思路分析: 1、产生一张png的图片 2、为图片设置背景色 3、设置字体颜色和样式 4、产生4位数的随机的验证码 5、把产生的每个字符调整旋转角度和位置画到png图片上 6、加入噪点和干扰线防止注册机器分析原图片来恶意注册 7、输出图片 8、释放图片所占内存 二、实现方法 authcode.php文件 ?php session_start (); header ( 'Content-type
声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。 为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。 静态属性不可以由对象通过-操作符来访问。 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数
在微信公众服务号开发需求中经常有获取用户位置信息的功能,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动。 下面通过给大家介绍微信服务号获取用户位置信息的原理与步骤。 原理 1. 位置信息获取流程 2. 位置信息报文 xmlToUserName![CDATA[gh_public_member_account]]/ToUserNameFromUserName![CDATA[oNEGGwGfl8f5xMEqVHToL63LDL40]]/FromUserNameCreateTime1444035

php实现的递归提成方案实例 - 2015-11-15 17:11:44

本文实例讲述了php实现的递归提成方案。分享给大家供大家参考,具体如下: 最近CRM项目中用到了递归提成的方案,分析如下: SQL语句如下: CREATE TABLE `crm_proxy_bonux_rule` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '超过的部份提成规则ID',`bouns_rule_name` varchar(20) NOT NULL COMMENT '规则名称,如D套餐0-20范围',`rid` bigint(20) DEFAUL
本文实例讲述了PHP使用Pthread实现的多线程操作。分享给大家供大家参考,具体如下: ?php class vote extends Thread { public $res = ''; public $url = array(); public $name = ''; public $runing = false; public $lc = false; public function __construct($name) { $this-res = '暂无,第一次运行.'; $this-param

PHP常用的小程序代码段 - 2015-11-15 17:11:42

本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下: 1.计算两个时间的相差几天 $startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05"); 上面的php时间日期函数strtotime已经把字符串日期变成了时间戳,这样只要让两数值相减,然后把秒变成天就可以了,比较的简单,如下: $days=round(($enddate-$startdate)/3600/24) ;echo $days; //days为得到的

php表单提交实例讲解 - 2015-11-15 17:11:04

本文为大家分享了一个特别简单的php表单提交实例,具体的实现步骤如下: 实例代码如下: form action="someform.php" method="post" table width="541" border="0" tr td width="26%"姓名:/td td width="74%"input type="text" name="username" value="raymond" id="username"//td /tr tr td密码:/td tdinput type="passw
1,phpthumb_ico 是生成ICO图标的类,源码如下 class phpthumb_ico { function phpthumb_ico() { return true; } function GD2ICOstring($gd_image_array) { foreach ($gd_image_array as $key = $gd_image) { $ImageWidths[$key] = ImageSX($gd_image); $ImageHeights[$key] = ImageSY($g
本文实例讲述了PHP实现操作redis的封装类。分享给大家供大家参考,具体如下: ?php/** * Redis 操作,支持 Master/Slave 的负载集群 * * @author jackluo */class RedisCluster{ // 是否使用 M/S 的读写集群方案 private $_isUseCluster = false; // Slave 句柄标记 private $_sn = 0; // 服务器连接句柄 private $_linkHandle = array( 'maste