禁用通过TCPDF在iFrame PDF中显示的浏览器缓存

时间:2013-03-03 10:04:23

标签: browser-cache tcpdf

我正在努力解决以下缓存问题。

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

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

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

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

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

    viewer.php?filename=NEW_OR_EDITED_FILENAME
    

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

    1. 添加Meta标签以通过 index.php viewer.php
    2. 禁用对生成的HTML的缓存
    3. 通过以下方式禁用jQuery AJAX调用的缓存:jQuery.ajaxSetup({cache: false});
    4. 在filename参数中添加一些随机字符串:

      viewer.php?文件名= FILENAME_RANDOMSTRING

    5. 然后从脚本中删除RANDOMSTRING并提取文件名。 这些解决方案都不适合我。经过测试的浏览器包括: Chrome 25.0.1364.152 Firefox 19.0 。有人可以帮我弄这个吗? 提前致谢

2 个答案:

答案 0 :(得分:1)

只是遇到了同样的问题,但在添加随机字符串后,它完美无缺:

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

答案 1 :(得分:0)

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