物件標籤無法顯示最新版本的 PDF
P粉677573079
P粉677573079 2024-03-29 13:42:08
0
1
442

我正在託管一個網站,其中有幾個目前位於物件標籤中的 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,但它與以前保持不變。

我加入了?在檔案名稱末尾,應該檢查最新版本,但它似乎不起作用。

當我清除瀏覽器的快取時,它會更新,但這當然不適合使用者。

感謝所有幫助。

P粉677573079
P粉677573079

全部回覆(1)
P粉300541798

在此上下文中,快取是指瀏覽器過去從 URL 載入資料並且仍然擁有其本機副本的位置。為了加快速度並節省頻寬,它使用本地副本,而不是向伺服器請求新副本。

如果您希望瀏覽器取得新的副本,那麼您需要執行一些操作,使其認為快取中的副本不好。

快取清除查詢字串

您正在嘗試使用此方法,但它並不真正適合您的需求,並且您的實作已損壞。

此技術專為不經常變更且不可預測的資源(例如網站的樣式表)而設計。 (由於您的資源每週都會發生變化,因此這對您來說不是一個好的選擇。)

每當資源改變時,它的運作方式就是更改資源的 URL。這意味著該 URL 與瀏覽器快取的資料不符。由於瀏覽器不知道新的 URL,因此必須重新要求它。

由於您已將查詢硬編碼為 n=1,因此它永遠不會改變,這會破壞該物件。

常見的方法是將查詢的值設定為檔案的時間戳記或校驗和。 (這通常是使用網站的建置工具作為部署流程的一部分來完成的。)

快取控制頭

HTTP 提供了告訴瀏覽器何時應該取得新副本的機制。有各種各樣的標頭,我鼓勵您閱讀此針對 Web 作者和網站管理員的快取教程:它很好地涵蓋了主題。

由於您的文件每週都會過期,我認為您最好的方法是在 PDF 的 URL 的 HTTP 資源上設定 Expires 標頭。

您可以透過程式設計方式將其設定為(例如)預計上傳新版本的時間後一小時。

如何進行此操作取決於部署 PDF 的主機的 HTTP 伺服器和/或伺服器端程式設計功能。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!