【问题标题】:Prevent Caching of PDFs in ASP Classic防止在 ASP Classic 中缓存 PDF
【发布时间】:2015-09-02 02:31:03
【问题描述】:

我刚开始为我工作的公司管理一个网站,它仍在使用 ASP Classic 运行,所以我必须学习很多东西。

最近,我们的管理层开始每隔几个小时将动态更新的 PDF 发布到网站上。

我遇到的问题是,尽管更改了标题以防止这种情况发生,但一些访问该文件的用户现在正在获取旧的缓存版本。

所以在我寻找解决方案的过程中,我遇到了这个 Stack Overflow 帖子 Right way to have asp.net not cache pdf files

但它是为 ASP.NET 而不是 ASP Classic 编写的,但由于该帖子,我能够使用 VBScript 提出一个可行的解决方案,并认为我应该与其他人分享。

【问题讨论】:

  • 几件事... 1. 使用客户端代码来生成它是多余的 2 使用客户端 VBScript 仅适用于Internet Explorer 浏览器的版本(事实上,即使 Microsoft 也不支持在 Edge 模式下运行的 IE 11 中,这说明了什么!)3 通过 noscript 等禁用代码将使该解决方案无用。
  • 如果您可以访问动态更新的 PDF (我假设通过 Classic ASP 使用一些 ActiveX 组件,例如 Persits.PDF) 那么您应该使用 HTTP 标头来控制从服务器缓存到浏览器。如果它不起作用,那么你做错了,或者浏览器 (我假设是 IE) 覆盖了 no-cache 请求,在这种情况下附加随机字符串效果很好。
  • 修改标题不适用于访问此文件的所有客户端,此外我们公司非常受限于我们仍在使用 IE9 的浏览器。

标签: pdf caching asp-classic


【解决方案1】:

下面的代码生成一个将当前时间转换为 Double 的链接,因此每次加载页面时它都会生成一个随机链接,以欺骗浏览器认为它是一个新的 pdf。

<a href="yourpdffile.pdf?<%= CStr(CDbl(Now)) %>">Link to the PDF</a>
  • 现在是当前时间
  • CDbl(Now) 将当前时间转换为 Double
  • CStr(CDbl(Now)) 将 Double 转换为字符串

【讨论】:

  • 你为什么要做客户端?如果您在 Classic ASP (server-side) 中生成链接,只需执行以下操作; &lt;a href="yourpdffile.pdf?&lt;%= CStr(CDbl(Now)) %&gt;"&gt;Link to the PDF&lt;/a&gt;。这样,链接就已经从服务器响应中生成了,而不依赖于客户端代码。
  • 我最初尝试过,但它没有用,所以我可能在输入时错过了输入的内容,因为它现在可以工作了我会改变我的答案以包括你的 cmets
猜你喜欢
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多