2012-12-10 83 views
1

我每次搜索時都會搜索關於如何禁用瀏覽器緩存的信息。 從來沒有任何啓用它。如何正確使用codeigniter啓用瀏覽器緩存?

如何獲取後退按鈕以使用緩存而不重新生成頁面?

+0

這取決於你使用的是什麼網絡服務器,比如Apache,NGINX,Lighttpd等等都以不同的方式處理它。這與CI本身沒有多大關係,儘管... – Brendan

+0

你是說在服務器端緩存你的頁面/查詢嗎? CI有兩種方法。 – Chords

回答

2

據我知道你可以控制強制瀏覽器通過這些元標籤的方式來重新加載數據:

<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Cache-control" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

,但你不能迫使它從緩存中讀取。如果您沒有明確指定忽略緩存,並且頁面數據實際上已被緩存且未過期,則瀏覽器本身將爲您執行此操作。

這不依賴於CodeIgniter,因爲它是客戶端,但您可能需要使用CI的html helper中包含的meta()函數,該函數將簡單輸出相應的元標記。例如:

echo meta('Cache-control', 'no-cache', 'http-equiv'); 

將生成上面的第二個代碼行。

注:

  1. 的第一元標記被指定用於HTTP/1.0,而第二一個是HTTP/1.1,但兩者都使用,以允許向後兼容。

  2. 如果您使用XHTML,而不是HTML記得與/>

+0

爲什麼你不做好注意事項2? – WebweaverD

+0

@WebweaverD:你對備註2有什麼意義? –

+0

@LuisMartin我相信他正在談論關閉meta標籤,用/> –

2

瀏覽器緩存關閉meta標籤無關與笨。您可以使用HTML元標記來指示瀏覽器特別是不緩存的頁面,也可以設置高速緩存期滿個別網頁像這樣:

<meta http-equiv="expires" content="Mon, 10 Dec 2001 00:00:00 GMT" /> 

您可以使用一點的PHP在那裏下降明天的日期。瀏覽器(取決於設置)通常會自動從緩存中提取儘可能多的內容,包括單擊後退按鈕時 - 後退按鈕的緩存工作方式與來自其他任何鏈接的緩存相同。

您可以在apache服務器上使用類似於以下內容的設置,通過您的htaccess設置expires頭文件(您將不得不詢問如何在其他服務器類型上執行此操作),以告訴瀏覽器應該緩存某些類型的內容給定的時間段:

ExpiresByType text/html "access plus 60 seconds" 

這將告訴瀏覽器來存儲MIME類型的文本什麼/ HTML 60秒(包括笨輸出)但不要,如果你處理動態內容這將做到這一點停止任何正在加載的動態頁面內容,並停止對正在被返回的訪問者加載的內容所做的任何更改(顯然,第二部分不是60秒緩存存在這樣的問題)。

要實現的關鍵是你的頁面不是一件事,它由很多部分組成,其中一些部分應該從緩存(js,css,圖像等)調用,一些不應該(經常HTML將屬於這個類別)。 瀏覽器會自動調用緩存未過期的頁面中的所有部分。

通常你會使用.htaccess(或類似的方法)來緩存你的CSS,圖像等(使用文件名中的版本來強制重新加載時)。

你還應該利用服務器端緩存 - codeigniter這樣做整個頁面,但我不傾向於發現這對任何類型的動態網站非常有用,所以我會看看使用菲爾鱘部分緩存庫CI,如果你有興趣SS緩存:

https://github.com/philsturgeon/codeigniter-cache

這不會停止的請求被髮送到服務器,但將意味着請求需要較少的處理,並且可以充當靜態內容的一個或數件。

相關問題