如何防止浏览器缓存

时间:2011-06-12 01:09:23

标签: javascript browser

我在做facebook app开发。当我改变我的CSS样式表/添加一个javascript函数时,一些让我烦恼的是随机的。浏览器根本不反映更改。这真的很烦人,因为我永远看不到我刚刚做出的改变。

例如。我更改了我的CSS样式表,因此img1从100px移动到50px。但是在firfox / chrome中,img从来没有动过一点。

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

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

我正在使用我的mac作为托管服务器btw

由于

2 个答案:

答案 0 :(得分: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'); ?>">

Ruby (使用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'); %>">

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

答案 1 :(得分:3)

当包含你的js / css文件时,包括时间戳作为参数,这样的事情应该这样做:

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