我正在託管一個網站,其中有幾個目前位於物件標籤中的 PDF 檔案每週更新一次。 這些 PDF 檔案的名稱保持不變,但資料發生了變化。
目前我正在使用:
<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>
當我更新 PDF 時,我期待
data="seasons/S2223/Men2023.pdf?"
正在閱讀最新的 PDF,但它與以前保持不變。
我加入了?在檔案名稱末尾,應該檢查最新版本,但它似乎不起作用。
當我清除瀏覽器的快取時,它會更新,但這當然不適合使用者。
感謝所有幫助。
在此上下文中,快取是指瀏覽器過去從 URL 載入資料並且仍然擁有其本機副本的位置。為了加快速度並節省頻寬,它使用本地副本,而不是向伺服器請求新副本。
如果您希望瀏覽器取得新的副本,那麼您需要執行一些操作,使其認為快取中的副本不好。
快取清除查詢字串
您正在嘗試使用此方法,但它並不真正適合您的需求,並且您的實作已損壞。
此技術專為不經常變更且不可預測的資源(例如網站的樣式表)而設計。 (由於您的資源每週都會發生變化,因此這對您來說不是一個好的選擇。)
每當資源改變時,它的運作方式就是更改資源的 URL。這意味著該 URL 與瀏覽器快取的資料不符。由於瀏覽器不知道新的 URL,因此必須重新要求它。
由於您已將查詢硬編碼為
n=1
,因此它永遠不會改變,這會破壞該物件。常見的方法是將查詢的值設定為檔案的時間戳記或校驗和。 (這通常是使用網站的建置工具作為部署流程的一部分來完成的。)
快取控制頭
HTTP 提供了告訴瀏覽器何時應該取得新副本的機制。有各種各樣的標頭,我鼓勵您閱讀此針對 Web 作者和網站管理員的快取教程:它很好地涵蓋了主題。
由於您的文件每週都會過期,我認為您最好的方法是在 PDF 的 URL 的 HTTP 資源上設定
Expires
標頭。您可以透過程式設計方式將其設定為(例如)預計上傳新版本的時間後一小時。
如何進行此操作取決於部署 PDF 的主機的 HTTP 伺服器和/或伺服器端程式設計功能。