搜尋

首頁  >  問答  >  主體

物件標籤無法顯示最新版本的 PDF

我正在託管一個網站,其中有幾個目前位於物件標籤中的 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粉677573079P粉677573079272 天前506

全部回覆(1)我來回復

  • P粉300541798

    P粉3005417982024-03-30 00:20:52

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

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

    快取清除查詢字串

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

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

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

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

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

    快取控制頭

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

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

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

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

    回覆
    0
  • 取消回覆