解决修改css或js文件,浏览器缓存更新问题。
2015-12-21 15:27
796 查看
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、js等,而不必从你的服务器读取,这样在一定程度上加快了网站的打开速度,又可以节约一下你的服务器流量。
现在问题来了,.htaccess设置的css、js缓存都有一个过期时间,如果在访客的浏览器中已经缓存了css、js,在这些css、js缓存未过期之前,浏览器只会从缓存中读取css和js,如果你在服务器上修改了css和js,那么这些更改在回头客的浏览器中是不会有变化的,除非回头客按了Ctrl + F5刷新了你的网站页面或者手动清空了浏览器的缓存。一个网站的访客成千上万,回头客也会有不少,你不可能在更新css后让每个访客都刷新一下缓存吧,那么这个问题你会怎么处理呢?
更改css文件名:其实解决这个问题很简单,缓存是通过文件名标记缓存的内容的。在你更新了网站的css文件内容后,在更换一下css的文件名就可以了。如原先html中的css调用语句如下:
改一下css文件名就可以了:
另外一种更改css文件名的方法是将版本号写到文件名中,如:
css文件更新后,改一下文件名中的版本号即可:
给css文件加个版本号:其实每次修改css文件后还要修改css的文件名有点麻烦,那么我们可以在加载css语句中加入个版本号(即css链接中?后面的内容)就可以了。如原先html中的css调用语句如下:
改一下css文件的版本号改成2012就可以了:
需要注意的是,部分代理缓存服务器不会缓存网址中包含 "?" 的资源,所以方法二可能会导致你原先的缓存功能失效,可以改用第一种方法。
其实css文件后面的问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息,同时可以刷新一下浏览器端的缓存。一个小小的细节,可以给我们带来很大的方便。
问题
现在问题来了,.htaccess设置的css、js缓存都有一个过期时间,如果在访客的浏览器中已经缓存了css、js,在这些css、js缓存未过期之前,浏览器只会从缓存中读取css和js,如果你在服务器上修改了css和js,那么这些更改在回头客的浏览器中是不会有变化的,除非回头客按了Ctrl + F5刷新了你的网站页面或者手动清空了浏览器的缓存。一个网站的访客成千上万,回头客也会有不少,你不可能在更新css后让每个访客都刷新一下缓存吧,那么这个问题你会怎么处理呢?
方法一
更改css文件名:其实解决这个问题很简单,缓存是通过文件名标记缓存的内容的。在你更新了网站的css文件内容后,在更换一下css的文件名就可以了。如原先html中的css调用语句如下:1 | <link rel="stylesheet" href="style.css" /> |
1 | <link rel="stylesheet" href="index.css" /> |
1 | <link rel="stylesheet" href="index.v2011.css" /> |
1 | <link rel="stylesheet" href="index.v2012.css" /> |
方法二
给css文件加个版本号:其实每次修改css文件后还要修改css的文件名有点麻烦,那么我们可以在加载css语句中加入个版本号(即css链接中?后面的内容)就可以了。如原先html中的css调用语句如下:1 | <link rel="stylesheet" href="style.css?v=2011" /> |
1 | <link rel="stylesheet" href="style.css?v=2012" /> |
总结
其实css文件后面的问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息,同时可以刷新一下浏览器端的缓存。一个小小的细节,可以给我们带来很大的方便。
相关文章推荐
- POI EXCEL 样式设置
- css默认值汇总
- 让footer固定在页面(视口)底部(CSS-Sticky-Footer)
- 问题:css 自动换行;结果:CSS控制文本自动换行
- html+css麦子学院实训
- 用CSS3实现带小三角形的div框(不用图片)
- css3 常用命令总结(不定期更新)
- 横向滚动条展示 css
- CSS选择符
- CSS强制英文、中文换行与不换行 强制英文换行
- CSS3新增的选择器和属性
- 自定义浏览器滚动条样式
- 渐变背景 css3渐变效果及代码
- css3 新属性
- .net对js和css、img剥离项目进行压缩优化、cdn加速
- CSS的引入方式最常用的有三种,
- css毛玻璃效果
- [转]CSS Display(显示) 与 Visibility(可见性)
- css毛玻璃效果
- css3样式绘制各种图形,很厉害