Expires和max age的區別

2021-06-26 22:39:10 字數 1266 閱讀 2211

expires和max-age都可以用來指定文件的過期時間,但是二者有一些細微差別

1.expires在http/1.0中已經定義,cache-control:max-age在http/1.1中才有定義,為了向下相容,僅使用max-age不夠;

2.expires指定乙個絕對的過期時間(gmt格式),這麼做會導致至少2個問題

1)  客戶端和伺服器時間不同步導致expires的配置出現問題

2)  很容易在配置後忘記具體的過期時間,導致過期來臨出現浪湧現象;

3.max-age 指定的是從文件被訪問後的存活時間,這個時間是個相對值(比如:3600s),相對的是文件第一次被請求時伺服器記錄的request_time(請求時間)

4.expires指定的時間可以是相對檔案的最後訪問時間(atime)或者修改時間(mtime),而max-age相對對的是文件的請求時間(atime)

5.在apache中,max-age是根據expires的時間來計算出來的max-age = expires- request_time:(mod_expires.c)

429 expires = base + additional;

430 apr_table_mergen(t, "cache-control",

431 apr_psprintf(r->pool, "max-age=%" apr_time_t_fmt,

432 apr_time_sec(expires - r->request_time)));

注:如果是a,base=request_time,m的話base=finfo.mtime.

expires - request_time得到max-age,如果expires根據的是a(也就是accesstime)設定的(a後面的值就是addtional),那麼expires設定的值就等於addtional值,但是如果expires根據的是mtime,那麼如果m後面的引數小於最後修改時間到當前時間的差(比方說2小時前修改了檔案(19:00:00),現在設定m3600(現在是21:00:00)並且訪問,max-age=expires-request_time = (finfo.mtime+additional)- request_time),計算出的max-age就是負數(可以試驗看到這個結果):

max-age = (19:00:00+3600/3600) - 21:00:00 = -3600s

這樣,在apache中,max-age就不僅僅是相對atime的時間了,如果設定為m,相對的是mtime。

Expires和max age的區別

expires和max age都可以用來指定文件的過期時間,但是二者有一些細微差別 1.expires在http 1.0中已經定義,cache control max age在http 1.1中才有定義,為了向下相容,僅使用max age不夠 2.expires指定乙個絕對的過期時間 gmt格式 這...

Cookies的Expires屬性詳解

response.cookies cookiename expires中expires的屬性如下 response.cookies cookiename expires 1 表示網頁顯示之後過期 response.cookies cookiename expires 0 立即過期 response....

負載均衡環境中和如何設定Expires和Etag

在負載均衡環境中 lvs,loadbalance 為了減少瀏覽器資料的重複請求操作,一般需要設定 http header 的 etage 和 expires 告訴瀏覽器請求資料是否已過期。以下內容主要考慮apache squid 環境 以上設定為 檔案的有效期為從請求檔案開始1個月,html,css...