2013-09-29 118 views
0

在我的網站上有一個靜態頭,其中包含一些圖形&導航等。此內容是靜態的,不必每次都加載。PHP:緩存靜態導航

有沒有辦法把它放在一個HTML文件中,將其緩存在客戶端瀏覽器上,並告訴瀏覽器將該文件包含在頁面的某個位置?

+0

僅瀏覽緩存整個文件 – 2013-09-29 19:52:41

+1

你需要什麼? – zerkms

回答

0

我能想到的唯一可能是將靜態HTML放到一個單獨的php文件中(在其中設置一些適當的頭文件以允許緩存)並使用JavaScript執行Ajax調用以將文件加載到您的站點。使用jQuery,您可以使用:

$('#navigation').load('navigation.php'); 

這將使客戶端加載使用,可如果你設置了相應的頭被緩存單獨的GET請求導航。然而,在我看來,這是嚴重的超載,並且可能導致導航在頁面的其餘部分之後加載一段時間,更不用說禁用JavaScript的用戶的兼容性問題了。

+3

「這是一個不好的主意答案」。如何不回答? :-) – 2013-09-29 19:57:08

+0

他問了一個允許緩存的方法,我提供了一個方法來做到這一點;-)我不相信他應該實現這一點,我還提供了爲什麼我相信他不應該這樣做的信息 - 但他是決定在他的情況下是否合適的人。 – TheWolf

+2

好想他沒有問過如何殺死教皇呢! – 2013-09-29 20:01:26

0

我同意TheWolf,這也是我所建議的。

[編輯:正如安東尼指出,這將不允許單獨緩存頭。]
您可以簡單地將HTML到它自己的PHP文件,包括它的服務器端使用需要的時候:

<?php include 'header.php'; ?> 

「header」html將包含在頁面的html中,並且將被瀏覽器緩存(假設發送正確的緩存標頭)。這是在php中包含條件內容的最常用方法。

想要單獨緩存標題的原因是什麼?如果您的應用程序正在生成標準網頁,那麼通過Javascript單獨加載標題將會變得更慢。任何帶寬節省可能可以忽略不計。

如果你決定要動態加載使用JavaScript的內容,一些事情可以做,以增強最終用戶的體驗是:

  • 將你的Javascript在模板的結束標記上方底。這將允許瀏覽器首先加載頁面渲染所需的其他資源。
  • 如果可能,請通過將容器大小設置爲模板中適當的高度和寬度來填充要注入內容的區域。這將防止頁面由於標題所需的額外空間而「跳躍」。
+1

「這將允許瀏覽器首先加載頁面渲染所需的其他資源。」 ---現在用戶在頁面完全加載之前不會看到導航。這樣一個偉大的UX。布拉沃。 – zerkms

+0

這不會自行緩存標題部分。 – Anthony