Heim > Fragen und Antworten > Hauptteil
Ich hoste eine Website, die derzeit mehrere PDF-Dateien in Objekt-Tags enthält, die wöchentlich aktualisiert werden. Die Namen dieser PDF-Dateien bleiben gleich, die Daten haben sich jedoch geändert.
Derzeit verwende ich:
<object id="men" data="seasons/S2223/Men2023.pdf?" type="application/pdf" width="100%" height="750px"> <p>The file could not be read in the browser <a href="seasons/S2223/Men2023.pdf?"> Click here to download</a> </p> </object>
Ich freue mich darauf, wenn ich das PDF aktualisiere
data="seasons/S2223/Men2023.pdf?"
Lesen Sie das neueste PDF, aber es bleibt dasselbe wie zuvor.
Ich habe es hinzugefügt? Am Ende des Dateinamens sollte nach der neuesten Version gesucht werden, aber es scheint nicht zu funktionieren.
Wenn ich den Cache des Browsers lösche, wird er aktualisiert, aber das funktioniert für den Benutzer natürlich nicht.
Danke für all die Hilfe.
P粉3005417982024-03-30 00:20:52
在此上下文中,缓存是指浏览器过去从 URL 加载数据并且仍然拥有其本地副本的位置。为了加快速度并节省带宽,它使用本地副本,而不是向服务器请求新副本。
如果您希望浏览器获取新的副本,那么您需要执行一些操作,使其认为缓存中的副本不好。
您正在尝试使用此方法,但它并不真正适合您的需求,并且您的实现已损坏。
此技术专为不经常更改且不可预测的资源(例如网站的样式表)而设计。 (由于您的资源每周都会发生变化,因此这对您来说不是一个好的选择。)
每当资源发生变化时,它的工作原理就是更改资源的 URL。这意味着该 URL 与浏览器缓存的数据不匹配。由于浏览器不知道新的 URL,因此必须重新请求它。
由于您已将查询硬编码为 n=1
,因此它永远不会改变,这会破坏该对象。
常见的方法是将查询的值设置为文件的时间戳或校验和。 (这通常是使用网站的构建工具作为部署过程的一部分来完成的。)
HTTP 提供了告诉浏览器何时应该获取新副本的机制。有各种各样的标头,我鼓励您阅读此针对 Web 作者和网站管理员的缓存教程:它很好地涵盖了主题。
由于您的文档每周都会过期,我认为您最好的方法是在 PDF 的 URL 的 HTTP 资源上设置 Expires
标头。
您可以通过编程方式将其设置为(例如)预计上传新版本的时间后一小时。
如何进行此操作取决于部署 PDF 的主机的 HTTP 服务器和/或服务器端编程功能。