【问题标题】:css and js files are being cached by the iframecss 和 js 文件被 iframe 缓存
【发布时间】:2012-08-13 14:06:35
【问题描述】:

我正在使用一个名为 facebox 的 jquery 插件。它工作得很好,但我面临着!有问题。看起来它的 iframe 方法导致我的浏览器缓存正在加载到目标页面中的 css。

这就是我在 jquery 就绪状态的页面中调用它的方式。

$('a.participate').click( function(){
            $.facebox({
                iframe: '" . $urlparticipate . "',
                rev: 'iframe|550|550'
            });
            return false ;
        });

其中 $urlparticipate 是将在 iframe 中打开的 url。 我仔细查看了facebox.js,发现插件似乎使用了以下方法来创建iframe。

function fillFaceboxFromIframe(href, klass, height, width) {
    $.facebox.reveal('<iframe scrolling="auto" marginwidth="0" width="'+width+'" height="' + height + '" frameborder="0" src="' + href + '" marginheight="0"></iframe>', klass)
  }

如何防止 css 被缓存?我知道它正在被缓存,因为我更改了元素的 css 样式。我什至更改了一些正在加载的 js 代码,它仍在加载旧代码。

我还尝试了以下方法:

  1. 在head中前端添加目标页面

    meta http-equiv="Cache-control" content="no-cache"

    meta http-equiv="Pragma" content="no-cache"

    meta http-equiv="Expires" content="0"

  2. 我尝试从后面的代码 (php) 中添加一些标头

    header("Cache-Control: no-cache");

    header("Pragma: no-cache");

一切都没有成功.. 我错过了什么?

【问题讨论】:

    标签: php javascript jquery facebox


    【解决方案1】:

    您可以随时尝试对页面上的 CSS 引用进行“版本控制”。有好方法和不太好的方法:每次进行更改时都附加一个静态版本号,或者使用随机生成的 GUID,这将有效地强制对页面的每个请求以检索 CSS 文件( s)。更好的选择是静态的,像这样:

    <link type="text/css" rel="stylesheet" href="cssfile.css?1.12" />
    

    【讨论】:

    • 是的,它成功了!但后来它又被缓存了......我应该每次都添加一个随机数之类的东西吗?
    • 是的,您可以使用随机生成的值(如 GUID)对其进行版本控制,但这确实是一种不好的做法。最好的选择是仅在您进行更改时对其进行版本控制...
    • 是的,所以每次我进行最终更改时,我都会对其进行版本化。很好,它让我喜欢了一整天:S 终于我明白了,thanx
    • 时间戳优于随机数。
    【解决方案2】:

    尝试使用 CSS 文件名(通常是版本号)抛出一个 var,这样浏览器就无法缓存它。类似 foo.css?ver=bar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 2020-06-07
      • 1970-01-01
      • 2012-05-27
      • 2011-11-24
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多