2010-07-29 27 views
5

「的網頁越來越 複雜與多個腳本,樣式 表,圖像和Flash他們。到頁面的 第一次訪問可能需要 幾個HTTP請求裝入所有 組件。通過使用Expires頭 這些組件變得緩存, 避免了不必要的HTTP在隨後的頁面訪問量要求 。過期 頭是最經常與 圖像相關聯的,但他們可以而且應該在所有的頁面組件,包括 腳本,樣式表使用 ,和Flash。「在網站的過期標題中設置多少時間?

寫在YSlow的

我的問題是多少時間將是一個有多個樣式表,Flash標題,Javascripts,圖像,PDF格式,MS Excel文件,PPT等網站的過期標題設置好?

如果我想在所有事情上設置相同的過期時間。

回答

2

如果您的頁面資源(images/css/js)通常不會更改並且是靜態的,您可以將expires標題設置爲遠遠超出1年

對於頁面自己它真的取決於內容。如果您的內容頻繁更改,則應確保您的過期標題未設置得太大,否則您的訪問者將收到過時的內容。

如果您考慮類似於SO本身的網站,則內容會頻繁更改,以致頁面上的expires標頭非常小。從頭文件看,他們看起來像是使用了60秒的最大年齡,並且在當前1分鐘內有一個過期頭文件。

+0

因此,如果我爲任何頁面設置了1年,並且我在6個月後更新了該頁面,則用戶將無法看到這些更改。即使他們使用Ctrl + F5來強制刷新頁面。我對嗎? – 2010-07-29 12:48:45

+0

對,如果頁面仍然有效並且用戶還沒有清除瀏覽器緩存,那麼瀏覽器將使用緩存的內容,直到它滿足頁眉緩存要求。 – 2010-07-29 12:50:22

+0

我正在爲客戶做一個網站,我不知道他什麼時候會改變網站。所以我不應該在這種情況下設置過期標題 – 2010-07-29 12:51:09

6

我所做的是將CSS和JavaScript文件的到期時間設置爲較高的值,如1或5年。當我更改樣式表或JS文件時,我會更改其URL中的版本號,以防止從緩存中提供過時的文件。

看起來這是什麼也是如此,太:

<link rel="stylesheet" href="http://sstatic.net/stackoverflow/all.css?v=e27c9b7474df"> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

<script src="http://sstatic.net/js/question.js?v=b05e8725a843" type="text/javascript"></script> 

所以當他們改變了樣式,他們改變all.css?v=e27c9b7474dfall.css?v=some new version。該question.js JavaScript文件遵循相同的約定。但是文件名也可以工作,你可以調用你的CSS/JS文件all-1.css,然後將其更改爲all-2.css等。只要URL更改,版本號的實際格式就由你決定。