禁止静态文件缓存的方法,可用于JS与CSS文件上

标签: 文件 缓存 方法 | 发表时间:2013-04-24 10:39 | 作者:youaregoo
出处:http://blog.csdn.net

什么情况下,要禁止静态文件缓存:
1、经常可能要改动的 js, css.
       比如 一个html 文件, test.html 在 1.0版本中。可能是这样
     <script src="common.js"></script>
     修改后  v1.1版本:
 <script src="common.js"></script>
 <script src="foo.js"></script>
   新增加了一个foo.js  同时,也改动了common.js , 在common.js 中定义了新的类,并在foo.js 中使用了common.js.  

在这种情况下如果以前用户浏览过 1.0版本的 html 文件,那么他的浏览器自动缓存了 common.js
当他浏览新版本的时候,因为使用的是 v1.1的 foo.js 和 v1.0的 common.js ,这样将导致脚本出错。


解决方法探讨:
  因为css,js 是通过 <script src=....> 这种方式加载的,所以,很难使用 asp 的那种服务器端禁止缓存的办法。也很难使用ajax的通过设置 http请求头的办法禁止使用缓存。

看来随机数是个好办法。

// 方法一: 
document.write( " <script src='test.js?rnd= " + Math.random() + " '></s " + " cript> " )

// 方法二: 
var  js = document.createElement( " script " )
js.src = " test.js " + Math.random()
document.body.appendChild(js)


但是,如果采用随机数的话, js文件将永远得不到缓存,每次都必须重新从服务器加载,即使没有任何更改。
大家如果经常上国外网站的话,可以看到他们通常采用这样的方式来解决:
<script src="test.js?ver=113"></script>
其中 ver=113 的 113就是版本号,一般都是采用 CVS 或其他工具生成的开发版本号。

这样真正做到了应该缓存的时候缓存静态文件,当版本有更新的时候从获取最新的版本,并更新缓存。
对于图像 <img src="test.jps?ver=在CVS的版本号"> 来有效利用和更新缓存.

CSS更新的问题,如果网站CSS修改了,但客户浏览器设置不更新缓存,那看到的网页可能会乱掉。因为CSS缓存没有更新。(解决,可以在css文件后加一个参数,参数改变后,浏览器会重新下载新的文件。如:<link rel="stylesheet" type="text/css" href="templates/css/stylesheet.css?v=1366768782">)



作者:youaregoo 发表于2013-4-24 10:39:08 原文链接
阅读:60 评论:0 查看评论

相关 [文件 缓存 方法] 推荐:

禁止静态文件缓存的方法,可用于JS与CSS文件上

- - CSDN博客互联网推荐文章
什么情况下,要禁止静态文件缓存:. 1、经常可能要改动的 js, css.        比如 一个html 文件, test.html 在 1.0版本中.      修改后  v1.1版本:.    新增加了一个foo.js  同时,也改动了common.js , 在common.js 中定义了新的类,并在foo.js 中使用了common.js.  .

ASP.NET性能优化之构建自定义文件缓存

- Pei - 博客园-首页原创精华区
ASP.NET的输出缓存(即静态HTML)在.NET4.0前一直是基于内存的. 这意味着如果我们的站点含有大量的缓存,则很容易消耗掉本机内存. 现在,借助于.NET4.0中的OutputCacheProvider,我们可以有多种选择创建自己的缓存. 如,我们可以把HTML输出缓存存储到memcached分布式集群服务器,或者MongoDB中(一种常用的面向文档数据库,不妨阅读本篇http://msdn.microsoft.com/zh-cn/magazine/gg650661.aspx).

[转]缓存大量小文件?Redis是首选!

- - 小鸥的博客
现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右. 现在需要将这些数据做缓存以在高并发的时候依然可以快速响应. 因为这些数据基本没有冷热数据之分,所以需要将全部数据都放到缓存中. 1、直接生成静态文件,利用nginx对静态文件的高效做静态缓存.

nginx缓存html静态文件,解析php及反向代理IIS的配置

- - 开源软件 - ITeye博客
       Nginx缓存html静态文件 解析php及反向代理IIS的配置,供初学的朋友参考. server_name k; #碰到域名为k的 就交给iis来运行. proxy_pass http://k:8080/;#我的IIS上面的站点即为http://k:8080. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ { #指定缓存文件类型.

扫描Class文件的方法

- - Java - 编程语言 - ITeye博客
看了别人的代码多了,总能够学习一些东西的,把自己学的东西都点滴都记录下来.. 今天自己以前写的一个简单的工具包,用来扫描类,可以扫描jar文件和包里的文件,说明如下:. 1.扫描是某子类的Class,可以是包及其子包下的Class包括jar文件里的Class. 2.扫描类上含有某(可以是多个)注解的Class,可以是包及其子包下的Class包括jar文件里的Class.

EXE文件结构及读取方法

- - CSDN博客推荐文章
     EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE) 文件格式的文件,它可以加载到内存中,并由操作系统加载程序执行,是可在操作系统存储空间中浮动定位的可执行程序. 如记事本程序notepad.exe ,可以用来编辑文档,如:测试.txt双击打开notepad.exe记事本程序来进行编辑处理.

linux nohup.out文件过大解决方法

- - 孟飞阳的博客
先说一下 Linux重定向:. 0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出. 在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号. 例如,将某个程序的错误信息输出到log文件中:./program 2>log. 这样标准输出还是在屏幕上,但是错误信息会输出到log文件中.

一个可以查看linux当前缓存了哪些大文件的小工具

- - Zlatan Eevee
linux用户可能经常遇到的一个问题是,机器有16GB内存,开的进程也不多,但是剩下的free内存并不多,大部分都被buff/cache掉了(比如下面我的PC),但是cache了些什么东西并不清楚,linux也没有个命令能查看. 前几天看到有个人用go写了个 pcstat,可以查看某个文件是否被缓存(作者的目的是数据库调优),也可以根据进程pid来查看都缓存了哪些文件,但是不能查看整个操作系统都cache了哪些文件.

快速找到Mac中特定文件的方法

- Luosky - Tip4Mac
今天来跟大家分享的是如何在Finder里面快速定位你需要找的文件. 当然,如果您本身对文件分类非常详细的话那么可能你要找哪个文件一下就能想起来. 但是如果您是做设计或者是经常搞一些创作的人的话,可能零零碎碎的文件在您的Mac里面可能会保存了一大堆. 当然,如果您对您电脑里面的文件有一个很好的命名规则的话,再利用今天的小窍门会锦上添花的.

Windows下5个简单快速加密文件的方法

- - LuckerMe.com
年初,我碰到这样一个情况,我有一个中国的作者,我们相信那里的电邮通信是被监控的. 当时我使用了一款功能完备的电邮加密系统,叫做 VaultletSuite,它要求双方电脑都要安装客户端. 尽管它看起来非常安全,可是仅仅为了与某个人通信就要登录一个专门的电邮客户端,实在是有些累赘了. 如果你也面临通信可能被监管的境况,在发送文件之前能够简单快捷的进行加密就很有必要了.