2014-01-07 32 views
0

有一個靜態網頁緩存層是一個非常簡單的概念。另一方面,大多數動態生成的PHP,Python,Ruby等網頁都使用靜態模板,只有一小部分是動態內容。如果我的網頁非常頻繁地被點擊,並且這個網頁的靜態效果達到99%,那麼當有1%的動態內容針對查看該網頁的每個用戶時,我仍然可以從緩存中受益嗎?我覺得好像有兩個不同版本的同一個問題。緩存動態網頁(頁面可能99%靜態,但包含一些動態內容)

  • 內容是靜態的爲使用者的整個會話,例如對每一個網頁中所示的靜態頂部條(例如在像Facebook上的網站,可包含用戶的圖片和名字頂欄)。這個用戶特定的信息可以緩存在Javascript本地,以防止需要爲每個頁面加載請求相同的信息?

  • 靜態頁面,其中包含1%的動態內容,對於給定的查看者而言,這些頁面大多數是唯一的,並且每頁頁面都不相同(例如,頁面只通過指示用戶是否喜歡某些頁面頁面上的內容通過豎起大拇指圖標,所以大多數內容都是靜態的,除了頁面上某些項目的少數「豎起大拇指」圖標)。

我很欣賞這一點。

回答

3

您可以將頁面加載爲靜態頁面,然後使用AJAX加載少量動態內容。然後,只要你願意,你可以緩存頁面。如果動態內容的數量或其他方面阻止您這麼做,您仍然有幾個選擇來提高性能。

如果您的網站非常頻繁地被點擊(例如每秒幾次),您可以緩存整個動態生成的網頁,例如一分鐘或三十秒等短時間間隔。這將使您獲得巨大的性能提升,並且如果使用合理的時間間隔,用戶可能不會察覺。

爲了進一步改進,請考慮緩存數據庫查詢和應用程序的其他部分,即使這樣做的時間很短。

+1

這是一個好主意,緩存頁面的靜態版本並使用AJAX來填充動態內容。這樣可以減少登錄用戶看到頁面的初始延遲,併爲未登錄的用戶提供整個頁面。 – onlinespending

+0

這涵蓋了每個頁面之間動態的,特定於用戶的內容不同的情況,但是對於每個用戶都是動態但每頁靜態的頂部欄之類的東西,本地緩存會很不錯。什麼是最好的方法呢? – onlinespending

+0

只要它可以作爲字符串存儲,您可以將其存儲在sessionStorage JavaScript對象的本地。然後,如果它在那裏可用,請閱讀並顯示它。如果沒有,請從服務器獲取它。 –

0

閱讀一些關於如何這樣做的教程。 Here就是其中之一。

當處理頁面的靜態部分時,建議使用輸出緩衝。