Internet Explorer 10 后退按钮缓存

2024-01-20

在 Internet Explorer 10 中,如果您按后退按钮,它会尝试从浏览器缓存中获取上一页。此行为与几乎所有其他浏览器(包括 IE9)不同,在 IE9 中,按后退按钮将完全重新加载上一页,而不是重用缓存。

我如何从网站与 IE10 进行通信,可能使用 javascript/headers 等,而不是在全局范围内对网站进行缓存利用?

(注意:我不是在寻找 IE10 设置来禁用此功能。我正在寻找可以在网站而不是浏览器中实现的解决方案,以指示 IE10 不要将此缓存用于后退按钮)。另外,我正在寻找适用于网站中每个页面的全局解决方案......

我的网站使用 PHP/Jquery

所以这里有更多信息

该页面是一个表单。它包含一些动态加载的信息。 (假设它包含用户提交表单的次数)

您单击表单的提交按钮。然后您将被重定向到表单的操作页面。

然后你按后退按钮。

在所有其他浏览器中,它都会使用新更新的“用户提交表单的次数”重新加载初始表单。然而,在 IE10 中,这种情况不会发生......我如何才能在 IE 10 中发生这种情况。

以下是一些标头示例:

1. 第一次加载表单时:

请求头

Key Value
Request GET /path/to/my/page HTTP/1.1
Accept  text/html, application/xhtml+xml, */*
Accept-Language en-US
User-Agent  Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Accept-Encoding gzip, deflate
Host    myhost.com
If-Modified-Since   Tue, 10 Sep 2013 23:55:33 GMT
If-None-Match   "1378857333"
DNT 1
Connection  Keep-Alive
Cookie  __utma=104299925.1011127538.1340896287.1364829735.1378764406.12; __utmz=104299925.1340896287.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); has_js=1; __utmc=104299925; __qca=P0-1247924781-1340896285157; _mkto_trk=id:601-CPX-764&token:_mch-sadfsadfze.com-1358808312889-73607; __utma=171146939.775168663.1343066079.1375907514.1378762647.41; __utmz=171146939.1343066079.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s_stats_browser_info=%7B%22pluginInfo%22%3A%7B%22pdf%22%3A%5B%22pdf%22%2C%22application/pdf%22%2C%220%22%5D%2C%22quicktime%22%3A%5B%22qt%22%2C%22video/quicktime%22%2C%220%22%5D%2C%22realplayer%22%3A%5B%22realp%22%2C%22audio/x-pn-realaudio-plugin%22%2C%220%22%5D%2C%22wma%22%3A%5B%22wma%22%2C%22application/x-mplayer2%22%2C%220%22%5D%2C%22director%22%3A%5B%22dir%22%2C%22application/x-director%22%2C%220%22%5D%2C%22flash%22%3A%5B%22fla%22%2C%22application/x-shockwave-flash%22%2C%220%22%5D%2C%22java%22%3A%5B%22java%22%2C%22application/x-java-vm%22%2C%221%22%5D%2C%22gears%22%3A%5B%22gears%22%2C%22application/x-googlegears%22%2C%220%22%5D%2C%22silverlight%22%3A%5B%22ag%22%2C%22application/x-silverlight%22%2C%220%22%5D%7D%2C%22res%22%3A%221920x1080%22%7D; _pk_id.2.1644=19232922ec6753dc.1371502517.1.1371502630.1371502517.; SESS569093948b0206b05eb2212616da3db6=1977iogjr841af2s8l4sd1cjd0; XDEBUG_SESSION=12250; has_js=1; __utmc=171146939

响应头:

> Key   Value Response  HTTP/1.1 200 OK Date    Tue, 10 Sep 2013 23:55:44 GMT
> Server    Apache/2.2.20 (Ubuntu) X-Powered-By PHP/5.4.15-1~tooptee10+1
> Last-Modified Tue, 10 Sep 2013 23:55:44 +0000 Cache-Control   no-cache,
> must-revalidate, post-check=0, pre-check=0 ETag   "1378857344"
> Keep-Alive    timeout=15, max=9987 Connection Keep-Alive
> Content-Type  text/html; charset=utf-8

2. 当您点击后退按钮返回到该表单时

请求头

>     Key   Value
>     Request   GET /path/to/my/page HTTP/1.1
>     Accept    text/html, application/xhtml+xml, */*
>     Accept-Language   en-US
>     User-Agent    Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
>     Accept-Encoding   gzip, deflate
>     Host  myhost.com

响应头

> Key   Value Response  HTTP/1.1 304 Not Modified
> X-Powered-By  PHP/5.4.15-1~tooptee10+1 ETag   "1378857344"
> Keep-Alive    timeout=15, max=9987 Content-Type   text/html; charset=utf-8
> Content-Length    117183 Expires  Tue, 10 Sep 2013 22:55:36 GMT
> Last-Modified Tue, 10 Sep 2013 23:55:44 GMT

请注意,它最终返回 304。当我在 Firefox 中尝试此操作时,当您按后退按钮时,它返回 200。


我认为你想要的行为是打破用户对后退按钮的期望的行为。

用户期望当他们按返回时,他们会返回到之前查看的页面,处于他们离开时的状态。大多数现代浏览器不仅通过缓存页面来实现这一点,还通过在内存中保留页面状态(包括 Javascript 上下文),以便当通过后退按钮返回页面时,它处于与之前相同的状态,包括它们之前的任何状态。写入表单或与之交互的任何 JavaScript。

在大多数浏览器中,您can通过设置强制覆盖它Cache-Control标头如no-cache and no-store。我不知道是否no-store适合您的 IE10 情况,或者 IE10 甚至忽略这一点并且只是返回到页面。如果确实如此,我想我不会真正责怪它。这样做是为了用户的利益,既要快速,又要返回到之前查看时的页面。

我认为我会采取的方法(你不必同意我的观点)是重新思考设计。如果您不打算向用户展示他们在使用时看到的相同内容,为什么还要要求用户点击“返回”呢?were回到那里?如果您想显示更新的表单,为什么不呢POST 后重定向 https://en.wikipedia.org/wiki/Post/Redirect/Get返回表单,这将算作新页面加载并尊重您的Cache-Control标题?这就是我要做的,并且它已经成为事实上的标准。

tl;dr有可能,但我不确定,你可以做你想做的事no-store,但我会考虑搬到POST 后重定向 https://en.wikipedia.org/wiki/Post/Redirect/Get相反,除了返回到之前的状态之外,不要依赖后退按钮进行其他操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Internet Explorer 10 后退按钮缓存 的相关文章

随机推荐

  • 函数是如何柯里化的?

    我了解柯里化的概念是什么 并且知道如何使用它 这些不是我的问题 而是我很好奇这是如何在比 Haskell 代码更低的级别上实际实现的 例如 当 2 4被柯里化 是一个指向2维持直到4被传入 甘道夫会扭曲时空吗 这是什么魔法 简短回答 是的
  • 将 S3 与 Active Storage 结合使用时出现“请求已过期”

    我是第一次使用 ActiveStorage 在开发中一切正常 但在生产 Heroku 中我的图像无缘无故地消失了 第一次显示正常 但现在没有显示图像 在控制台中我可以看到这个错误 GET https XXX s3 amazonaws com
  • 设置用户控件的默认事件

    我有一个User Control包含一堆控件 我想设置这个的默认事件User Control to the Click我的一个按钮的事件 我知道为了将默认事件设置为 UserControl 的事件之一 我应该添加以下属性 DefaultEv
  • 使用 MediaStore Android 10 下载大文件

    我正在尝试下载一个文件来下载Android 10及以上版本的目录 我做了如下 val resolver contentResolver val contentValues ContentValues apply put MediaStore
  • Yii - 从控制器动态更改规则

    假设我有一个可以有颜色的产品 根据产品类型 可能需要也可能不需要色域 如果总是需要颜色 我会在产品模型中包含以下内容 public function rules return array array colour required 但是 我
  • opencv函数中的内存泄漏

    我注意到我的程序的内存使用量有时会毫无意义地增加 特别是当我使用cvWaitKey 0 我的程序倾向于在 10 秒内将内存使用情况拍摄到一个巨大的大小 有解决办法吗 或者这是一个 OpenCv 错误 我有一个简单的函数叫做Show Imag
  • 数据集设计器问题 - Visual Studio 2008

    我们使用数据集在应用程序中的各个节点之间传递少量数据 数据集本身位于程序集中 因为它是许多其他组件的引用 Visual Studio 数据集工具养成了一个奇怪的习惯 即每次构建完成后都会创建一个新的设计器 所以 该项目看起来像这样 MyDa
  • Graphql 只查询非空对象

    我正在尝试执行这样的查询 people pet name result people pet null people pet name steve 我想要的是只得到包含宠物的人 有什么方法可以实现这一点而不是在我的解析器上编码 事实上 这是
  • Linux 内核模块 - 创建 proc 文件 - proc_root 未声明错误

    我从该 URL 复制并粘贴代码 以使用内核模块创建和读取 写入 proc 文件 但收到 proc root 未声明的错误 这个例子在几个网站上都有 所以我认为它是有效的 有什么想法为什么我会收到此错误吗 我的 makefile 需要不同的东
  • 如何在虚拟模式下自动调整列表视图的列宽?

    当我使用 TListView ViewStyle vsReport 时 我可以自动调整列的宽度 设置LVSCW AUTOSIZE or LVSCW AUTOSIZE USEHEADER http msdn microsoft com en
  • 当某些列有多个分隔符时,将 pandas 数据框从宽转换为长

    From 将 pandas 数据框从宽转换为长 https stackoverflow com questions 45123924 convert pandas dataframe from wide to long 45124130 4
  • 类型错误:Object(...) 不是第一个运行 webpack 的函数

    我尝试基于 webpack 运行我的应用程序 但在第一次运行期间出现错误 Uncaught TypeError Object is not a function at Object
  • 使用 KnpPaginatorBundle 对连接表进行排序

    我设置了一个测试来更加熟悉 Symfony2 和 KnpPaginatorBundle 我有一张包含宠物的桌子 其中引用了宠物动物类型 Dog Cat ETC 我可以按id name 但是当我尝试按动物排序时type我收到一条错误消息 指出
  • 将 Google 文档集成到网站中以进行内容创建

    我正在建立一个自助出版网站 我想将 Google 文档集成到我的网站中 并允许每个出版商 作家从我的网站编写她 他的书 然后从我的网站或直接从 Google 文档更新内容 并保持两个版本的内容同步 这可能吗 谢谢 是的 这是可能的 您可以获
  • .net 4 向后兼容性

    在 net 4 中开发的 Windows 应用程序引用在 net 3 5 中开发的程序集 是否需要安装 net 4 和 net 3 5 才能运行该应用程序 我怀疑是这样 正如我的观察之一 此外 这感觉很合乎逻辑 因为两者的执行都需要不同的运
  • 使用 Kerberos 对 Windows 进行 Ansible 不起作用

    我尝试使用 Ansible 1 9 0 1 使用域用户名配置 Windows 服务器 我已经成功设置了 Linux Ansible 控制盒 并且能够使用基本身份验证来运行 ansible ansible playbook play 但是 使
  • 如何从剪贴板中清除指定格式的数据?

    我将一些数据放入剪贴板 从剪贴板复制数据后 我想清除数据而不清除整个剪贴板 像这样的东西 wchar t buf NULL if OpenClipboard NULL 0 HANDLE hData GetClipboardData CF U
  • 如何在以 struct 作为参数的 Ruby FFI 方法中包装函数?

    我正在尝试使用 ruby ffi 从共享对象调用函数 我将以下内容编译成共享对象 include
  • Laravel 的数据表服务器端 php 类

    我希望我的数据表在服务器端处理数据 我引用了这个示例 服务器端示例 http www datatables net examples data sources server side html 然而 本例中给出的服务器端 php 类 ssp
  • Internet Explorer 10 后退按钮缓存

    在 Internet Explorer 10 中 如果您按后退按钮 它会尝试从浏览器缓存中获取上一页 此行为与几乎所有其他浏览器 包括 IE9 不同 在 IE9 中 按后退按钮将完全重新加载上一页 而不是重用缓存 我如何从网站与 IE10