【问题标题】:How to verify if caching is disabled (IE7)?如何验证是否禁用缓存(IE7)?
【发布时间】:2012-07-24 13:46:32
【问题描述】:

我正在开发一个应用程序,该应用程序利用 PDFLib 为我的用户提供总结其帐户的动态 PDF 文件,并且需要确保这些页面没有被缓存(传递了一些敏感数据,我不能将其存储在缓存中出于安全原因)。

我已尝试使用以下代码:

Header("Expires:-1");
Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-store, no-cache, must-revalidate");
Header("Cache-Control: post-check=0, pre-check=0", false);
Header("Pragma:no-cache");

首先,我没有可靠的方法来测试 IE7 是否不缓存页面,所以我的第一个问题是“我如何测试以确保我的无缓存标头正常工作?”

其次,在我将这些行添加到我的代码后,PDF 停止在 IE7 中显示。当我删除线条时,它工作正常。有人对如何避免这种行为有任何想法吗?

提前致谢!

编辑:第一个问题已经回答;我应该单独问他们。我的第二个问题是“如何避免 IE7 在发送无缓存标头时不呈现我的 PDFLib 页面的行为?”仍然有效。

【问题讨论】:

  • 您似乎设置了两个 cache-control 标头。第二个会覆盖第一个吗?
  • @starbeamrainbowlabs 不,第二个缓存控制头的第二个参数确保第一个缓存控制头不会被覆盖。
  • 我不知道!谢谢! :)
  • 是的,当我第一次看到 sn-p(来自谷歌搜索)时,我不得不在 PHP 文档中查找它。它将值附加到标头(最终结果等同于编写 Header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0") php.net/manual/en/function.header.php
  • @starbeamrainbowlabs 或至少 +1 其他人的评论。

标签: php html internet-explorer-7 pdflib no-cache


【解决方案1】:

要检查页面是否被缓存,请更改并刷新。注意Expires 标头应该包含一个日期,所以-1 的值是无效的。请尝试使用过去的日期。

【讨论】:

  • 如果我没记错的话,“-1”的计算结果是无效日期,浏览器会自动将其视为“过去的日期”,对吗?
  • 另外,是的,这是显而易见的答案;我想知道是否有任何开发人员工具(专门针对 IE7),这样我就不必通过命令链 x 次来继续提交并将我的代码推送到测试服务器只是为了测试以查看如果我的页面没有被缓存。
  • @Matt 可能,虽然我一直使用遥远的未来日期,我认为这可能有错误。如果你想测试 IE 的具体行为,你必须在 IE 中加载页面。
  • 我是这么想的;我只是想尽量避免“修改、提交、代码审查、推送、测试、重复”的循环。
  • @Matt 没有本地开发环境? :(
【解决方案2】:

我实际上找到了 IE 7 的 Debug Bar http://www.debugbar.com/download.php,它显示了所有的标头和缓存信息。我使用 HTTP(S) 选项卡,选择我的文档并查看下面的“信息和缓存”。掌握窍门后真的很容易。

【讨论】:

    猜你喜欢
    • 2014-02-20
    • 2016-01-28
    • 1970-01-01
    • 2013-01-23
    • 2012-03-01
    • 2012-08-14
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多