【问题标题】:Disable browser cache for displayed in an iFrame PDF by means of TCPDF禁用浏览器缓存以通过 TCPDF 在 iF​​rame PDF 中显示
【发布时间】:2013-03-03 10:04:22
【问题描述】:

我尝试了几个小时来解决以下缓存问题。

我的应用程序具有以下结构(简化):

  1. index.php - 主页(包含各种输入字段、提交按钮和 iframe,用于在 TCPDF 的帮助下显示 PDF 内容)

  2. generate.php - 根据提供的 POST 参数生成 PDF 文件并将文件存储到文件系统中

  3. viewer.php - 显示 PDF 文档(TCPD 库)。 iframe 加载此脚本以显示 pdf 文件

工作流程非常简单 - 用户选择一些选项并单击主页上的提交按钮。选定的参数通过 POST 通过 AJAX 发送到 generate.php 脚本。该脚本生成 PDF 文件并将其存储到文件系统。最后它返回新创建/编辑的文件名。文件名在 AJAX 回调函数中获取,然后使用新的/编辑的文件名刷新 iframe:

viewer.php?filename=NEW_OR_EDITED_FILENAME

一切正常,但是当文件被替换时,有时(不总是)浏览器会显示旧的 pdf 文件,尽管新版本在硬盘上。我尝试了以下解决方案:

  1. 添加 Meta 标签以禁用对 index.phpviewer.php 生成的 HTML 的缓存
  2. 为 jQuery AJAX 调用禁用缓存:jQuery.ajaxSetup({cache: false});
  3. 在文件名参数中添加一些随机字符串:

    viewer.php?filename=FILENAME_RANDOMSTRING

然后从脚本中删除 RANDOMSTRING 并提取文件名。 这些解决方案都不适合我。测试的浏览器是:Chrome 25.0.1364.152Firefox 19.0。有人可以帮我弄这个吗? 在此先感谢

【问题讨论】:

    标签: browser-cache tcpdf


    【解决方案1】:

    刚遇到同样的问题,但添加随机字符串后效果很好:

    <iframe src="file.pdf?=<?=time();?>"></iframe>
    

    【讨论】:

    • 感谢罗伊的回答!这看起来真的很好!我从来没有尝试在 filename 参数之外添加随机字符串,不知道为什么......也许这就是它不起作用的原因。我会尽快尝试您的解决方案,如果可行,会将其标记为正确答案
    【解决方案2】:

    经过几个小时的尝试,我找到的解决方案是每次都真正生成一个新文件(问题中的解决方案3,不删除文件末尾的随机字符串)。因此,每次更改都需要更新数据库并删除旧文件。我最初的意图是避免这些行为,但不幸的是没有找到其他解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-25
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2018-08-30
      相关资源
      最近更新 更多