Web前端效能優化(三)新增Expires頭
阿新 • • 發佈:2019-01-01
什麼是Expires頭?
Expires儲存的是一個用來控制快取失效的日期。當瀏覽器看到響應中有一個Expires頭時,它會和相應的元件一起儲存到其快取中,只要元件沒有過期,瀏覽器就會使用快取版本而不會進行任何的HTTP請求。Expires設定的日期格式必須為GMT(格林尼治標準時間)。
HTTP1.1協議中快取的另一種選擇
Expires存在著明顯的不足。
首先,Expires頭使用的是一個特定的時間,要求客戶端和伺服器端的時鐘嚴格同步。何為嚴格同步?我們知道客戶端的時間是可以修改的,如果伺服器和客戶端的時間不統一,這就導致有可能出現快取提前失效的情況,存在不穩定性。其次,假如Expires的日期到來了,那麼還需要在伺服器配置中提供一個新的日期。
面對這種情況,HTTP1.1引入了Cache-Control頭來克服Expires頭的限制。Cache-Control使用max-age制定元件被快取多久,使用秒為單位,例如Cache-Control:max-age=3600;表示元件將被快取60分鐘。如果max-age和Expires同時出現,則max-age有更高的優先順序,瀏覽器會根據max-age的時間來確認快取過期時間。
Cache-Control除了可以設定max-age之外,還可以同時設定其他標籤。如下圖所示常用標籤:
如何配置過期快取?
在ASP.NET下,可以通過web.config檔案來配置快取。
<span style="font-size:18px;"><span style="font-family:SimSun;font-size:14px;"><!--單獨配置Expires--> <system.webServer> <staticContent> <clientCache cacheControlMode="UseExpires" httpExpires="Sun, 29 Mar 2020 00:00:00 GMT"/><!--表示過期時間為2020年3月29號--> </staticContent> </system.webServer> <!--單獨配置max-age--> <system.webServer> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:01:00"/><!--表示過期時間為(30*24*60*60+60)s後--> </staticContent> </system.webServer> </span></span>