2009-02-04 79 views
1

我沒有很大的機會來研究這個主題,但我想我會問這個問題,看看我們是否可以在這裏創建關於這個主題的知識庫。關於使用子域強制緩存的問題

1)使用子域將強制客戶端緩存,這是默認情況下還是有一個簡單的方法讓客戶端禁用它?對我應該期待影響的用戶的比例更加好奇。

2)什麼都會被緩存?圖片?樣式表? Flash SWFs? JavaScript的?一切?

3)我記得讀過,你必須在你的URL中使用子域名或www才能工作,這是否正確? (這是否意味着SO不會允許它?)

我打算最終將其整合到我的所有網站上,但首先我要嘗試做一個網絡的Flash遊戲網站,所以我想www .example.com的網站將保持不變,但不使用www.example.com/images,www.example.com/stylesheets,www.example.com/javascript,& www.example.com/swfs我只會創建指向它們的子域名(分別爲img.example.com,css.example.com,js.example.com & swf.example.com) - 這是最佳行動方案嗎?

回答

5

使用subdomains for content elements並不是強制緩存,而是誘使瀏覽器打開更多的連接。這可以加快頁面加載時間。

這些元素的緩存完全取決於與該內容一起交付的HTTP頭。

對於像CSS,JS等靜態文件,服務器通常會告訴客戶,當文件被修改,這將允許瀏覽器要求的文件「If-Modified-Since」該時間戳。如何通過添加一些額外的緩存頭來改進這一點的具體情況取決於您使用的是哪個網絡服務器。例如,使用Apache,您可以使用mod_expires模塊來設置Expires標頭,或使用Header指令來輸出其他類型的高速緩存控制標頭。

舉個例子,如果你有一個子目錄在你的CSS文件,並希望確保他們緩存至少一個小時,你可以放置一個的.htaccess在該目錄與這些內容

ExpiresActive On 
ExpiresDefault "access plus 1 hours" 
+0

如何編輯我的圖像,js,css和swf的HTTP標頭以確保高速緩存發生? – 2009-02-04 18:54:50

0

查看YSlow的文檔。 YSlow是Firebug的插件,這是一款令人驚歎的Firefox網頁開發插件。有很多方法可以加速頁面加載,其中之一是使用一個或多個子域名來鼓勵瀏覽器執行更多的並行對象加載。

我在兩個Django站點上做過的一件事是使用自定義模板標籤來創建圖像,CSS等的僞路徑。該路徑包含時間最後修改爲僞目錄。此路徑組件由Apache .htaccess mod_rewrite規則剝離。然後給該對象一個10年的生存時間(ExpiresDefault「現在加上10年」),以便瀏覽器只加載一次。如果對象更改,則僞路徑會更改,並且瀏覽器將獲取更新的對象。