Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 910|回复: 0

使浏览器自动重新加载css/js文件的最好方法是什么?

[复制链接]

该用户从未签到

发表于 2011-10-18 16:36:35 | 显示全部楼层 |阅读模式
我注意到一些浏览器(特别是firefox和opera)非常热衷于使用缓存下来的.css/.js文件,这样一来,即使你的版本已经更新,浏览器还是使用的老版本。。。

所以问题是:怎么让浏览器在css/js文件发生改动时自动重新加载?

理想情况是该解决方案不会迫使浏览器在每次访问网页的时候都重新加载。





auto-versioning的实现方案如下:

首先,在httpd.conf或者.htaccess中开启urlrewrite规则

RewriteEngine on
RewriteRule ^(.*)\.[\d]+\.(css|js)$ $1.$2 [L]



其中[L]表示如果该条规则匹配,将忽略其他规则。可参考这里



The [L] flag causes mod_rewrite to stop processing the rule set. In most contexts, this means that if the rule matches, no further rules will be processed.

接着,使用下面的PHP代码:



function auto_version($file)
{
  if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
    return $file;

  $mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
  return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}


以后,诸如下面的代码:



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


改成:

<link rel="stylesheet" href="<?=auto_version('/css/base.css')?>" type="text/css" />\


这样,你不需要再改动任何代码,用户将始终使用最新版本的文件,因为当文件版本变动时,url也会改变。

其实该方法也适合其他类型的文件,不仅仅css、js
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-12 17:22 , Processed in 0.402337 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表