我正在尝试几个小时来解决以下缓存问题。
我的应用程序具有以下结构(简化):
index.php - 主页(包含各种输入字段、提交按钮和一个 iframe,用于在 TCPDF 的帮助下显示 PDF 内容)
generate.php - 根据提供的 POST 参数生成 PDF 文件并将文件存储到文件系统
viewer.php - 显示 PDF 文档(TCPD 库)。iframe 加载此脚本以显示 pdf 文件
工作流程非常简单——用户选择一些选项并单击主页上的提交按钮。选定的参数通过 POST 通过 AJAX 发送到 generate.php 脚本。该脚本生成 PDF 文件并将其存储到文件系统。最后它返回新创建/编辑的文件名。文件名在 AJAX 回调函数中获取,然后使用新/编辑的文件名刷新 iframe:
viewer.php?filename=NEW_OR_EDITED_FILENAME
一切正常,但是当文件被替换时,有时(不总是),浏览器会显示旧的 pdf 文件,尽管新版本在硬盘上。我尝试了以下解决方案:
- 添加 Meta 标签以禁用对index.php和viewer.php生成的 HTML 的缓存
- 通过以下方式禁用 jQuery AJAX 调用的缓存:
jQuery.ajaxSetup({cache: false});
在文件名参数中添加一些随机字符串:
viewer.php?filename=FILENAME_RANDOMSTRING
然后从脚本中删除 RANDOMSTRING 并提取文件名。这些解决方案都不适合我。测试的浏览器是:Chrome 25.0.1364.152和Firefox 19.0。有人可以帮我弄这个吗?提前致谢