1. 程式人生 > >Web前端效能優化(三)新增Expires頭

Web前端效能優化(三)新增Expires頭

什麼是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之外,還可以同時設定其他標籤。如下圖所示常用標籤:

Web前端效能優化教程 Web優化 Web前端優化

如何配置過期快取?

在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>