2011-06-12 91 views
3

我正在做Facebook应用程序开发。真正让我烦恼的是随机的,当我改变我的CSS样式表/添加一个javascript函数。浏览器根本没有反映出变化。这真的很烦人,因为我永远无法看到我刚刚做出的更改。如何防止浏览器高速缓存

例如。我改变了我的CSS样式表,所以img1从100px移动到50px。但在firfox/chrome中,img从未移动过一点。

我在脚本中添加了一个javascript函数a()。但浏览器的控制台告诉我一个()没有定义。我已经通过代码检查了10次,没有错误。

有人能告诉我这里有什么可能的问题,以及如何解决它?

我用我的MAC作为托管服务器BTW

感谢

回答

5

可以时间戳或其他唯一字符串添加到您不想要的文件的文件名被缓存,无论是在实际文件名或作为GET参数:

<link rel="stylesheet" type="text/css" 
     href="http://cdn.sstatic.net/stackoverflow/all.css?v=4fd8a9d8937d"> 

取决于你使用的服务器页面的服务器端语言,你可以这样做:

PHP(使用filemtime - 它返回一个文件的修改时间):

<link rel="stylesheet" type="text/css" 
     href="http://cdn.sstatic.net/stackoverflow/your_css_file.css?v=<?php echo filemtime('/your_css_file.css'); ?>"> 

红宝石(使用File.mtime它返回一个文件的修改时间):

<link rel="stylesheet" type="text/css" 
     href="http://cdn.sstatic.net/stackoverflow/your_css_file.css?v=<% print File.new("testfile").mtime.to_time.to_i('/your_css_file.css'); %>"> 

如果您使用该文件的修改时间,只有在用户修改后才会再次下载该文件。

3

包括你的JS/CSS文件时,包括时间戳作为PARAM,这样的事情应该这样做:

<link rel="stylesheet" href="css/screen.css?<?php echo time(); ?>" media="all" 
type="text/css" />