asp.net - Safari 9.1 更新破坏了 iframe 缓存

标签 asp.net iframe safari

我遇到了 Safari 缓存我的 iFrame 的问题。 以下(伪)HTML(好吧,它是一个 aspx 页面)在 Safari 9.0 以及 Mac 和 PC 上的所有其他浏览器中都可以。

<html>
<body>
<iframe id="page1" src="Page1.aspx" />
<iframe id="page2" src="Page2.aspx" />
</body>
</html>

在 Safari 版本 9.1 中,即使

  1. 开发者工具栏中的缓存已完全关闭
  2. 我按 Mac+R 重新加载页面

它将向服务器发送调用以获取 Page1 或 Page2,但不会显示它将呈现该页面的旧版本。据我所知,没有 Javascript 错误或类似错误。

我知道我可以添加一个随机数或类似的东西,但是,这只能部分帮助,因为 iframe 内的回发将再次显示缓存的页面。

还有其他人找到了解决方法吗?我还设置了所有 prama 无缓存等以避免这种情况,但没有运气。

我也在 E​​l Capitan 中尝试过此操作,结果相同,因此它看起来像是连接到 Safari 9.1 更新 (10601.5.17.4)

我还跟踪了服务器上的流量,请求实际上正在发生,并且正确的 html 返回到客户端,但这在 Safari 网络跟踪的“网络”部分中不可见。 ASP.Net v.4.0。

MacBook Air、OS X Yosemite (10.10.5)、Safari 版本 9.1 (10601.5.17.4)

最佳答案

我们在我们的应用程序中发现了同样的问题。我们在 iframe 中呈现一些内容,这些内容由外部页面中的控件更改。从 Safari 9.1 开始,iframe 不会呈现更改,即使它确实从服务器获取更新的内容。

使用上下文菜单在新选项卡中显示 iframe 会显示更新的内容,而无需重新获取,因此它显然位于 Safari 的内存中,但只是不会在 iframe 上下文中渲染到屏幕上。

现在看来,唯一的解决方案是开始使用缓存总线 URL,就像过去糟糕的日子一样......在这种情况下,Safari 确实应该尊重缓存控制 header 。

关于asp.net - Safari 9.1 更新破坏了 iframe 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545379/

相关文章:

asp.net - 如何在asp.net Windows 身份验证中获取用户详细信息

javascript - Safari 重新加载内存中的视频

javascript 取消隐藏 iframe 内的小程序

javascript - safari 无法在鼠标单击时执行 js

更改选项卡时 JavaScript 在 iPad 上暂停 : is there a way to know when coming back?

asp.net - 在 Visual Studio 中预编译 App_LocalResources

.net - 文本框上的自动完成扩展器而不使用 Web 服务

c# - 对母版页和页面内容使用相同的 CSS 文件

java - 如何使用 java 在 Selenium WebDriver 中处理 iframe

html - Angular - 通过不同的框架附加 html,每个框架一个模块