【问题标题】:A good method for client-side iframe caching客户端 iframe 缓存的好方法
【发布时间】:2011-06-14 14:48:15
【问题描述】:

我正在尝试在客户端缓存一些文档,以便更快地在它们之间切换。

文档已加载到 iframe 中,所以如何在浏览器中本地缓存它是个问题。

我的方法是有一个变量,item,然后做

if (item.cache) {
    $('.holder', someElem).html(item.cache);
    return;
}

item.cache = $('<iframe....');
$('.holder', someElem).html(item.cache);

但是,当注入到持有者上时,此方法会不断重新加载 iframe src。

客户端 iframe 缓存有什么好的方法吗?

【问题讨论】:

标签: javascript jquery caching iframe client-side


【解决方案1】:

iframe 在添加到dom 之前实际上不会触发页面刷新。我猜你保留了iframe 的一个实例,但在看到它之前不要将它添加到 dom 中。这种方法效果不好。我建议使用 css "display:none" 来加载它并隐藏,然后在需要时显示它。

【讨论】:

  • 隐藏/显示有效。谢谢 :) 在这种情况下,我们无法远离 iframe。
  • “远离 iFrames” 为什么?就像 HTML 表格非常适合表格数据而不是布局一样,iFrame 非常适合做它们应该做的事情:在您的网页中构建另一个页面。加载的 ajax 页面不运行脚本,也不在父页面中包含样式。您必须遍历这些元素并手动触发它们,即使那样,您也会在类之间获得可能的冲突。如果您需要嵌入外部页面,甚至在某些情况下甚至可能是内部页面,请使用 iFrame。
  • “远离 iFrame”,在没有任何问题背景的情况下这么说是一件很糟糕的事情。如何在一个 div 中加载一个完整的网站并防止它污染该 div 外部的范围?远离 iFrame,因为有人说了他们的坏话,
【解决方案2】:

HTTP 内置了缓存。Mark Nottingham 编写了a decent overview。设置 Cache-ControlExpires 标题应该足以满足您的描述。

【讨论】:

  • 感谢您的回答。但这不是需要浏览器先询问服务器是否有更新版本,然后再从本地缓存中加载吗?
  • 不,这就是 Expires 标头的用途。
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 2017-03-18
  • 2012-07-26
  • 2019-04-24
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多