HTTP max-age與Expires的分別


主要重點在於我們要明白一個相對(Expires)一個絕對(max-age).

分別

max-age
max-age是HTTP/1.1中,他是指我們的web中的文件被用戶訪問(請求)后的存活時間,是個相對的值,相對Request_time(請求時間).
例如:A.html  用戶請求時間是18:00,max-age設置的是600的話,相當18:00+600秒過期,也就是相對18:00的時間后面600秒后過期.默認的max-age是由Expires算出來的.

Expires
Expires是HTTP/1.0中的,它比max-age要麻煩點.Expires指定的時間分下面二種,這個主要考慮到apache中設置是A還是M.

1.相對文件的最后訪問時間(Atime)
當Apache使用A時間來做Expires時.這樣設置時.他就和max-age的值相等,因為max-age是相對文件的請求時間(Atime).

例如:ExpiresByType text/html A600

由上面我們得知,Apache設置Atime時,過期為600秒時.
Expires=18:00+600=18:10
max-age=18:00+600=18:10
得出:Expires=max-age

2.絕對修改時間(MTime)
這又分二種情況,我們來拿A.htm來講
假設文件的建立時間為18:00.

當用戶Request請求為18:00時,過期為600秒
Expires=18:00+600=18:10
max-age=18:00+600=18:10
得出:Expires等於max-age

當用戶Request請求為18:20時,過期為600秒

Expires=18:00+600=18:10(因為設置成Mtime時,時間由文件建立時間來決定)
max-age=18:20+600=18:30
得出:Expires不等於max-age

另外要注意,象上面這種清況時,max-age優化,所以過期時間為18:30.

在squid,如果沒有指明expires和max-age這二個的截止時間,那它就會使用發式截止時間,如參考 Last-Modified.
其實上面的max-age=18:20+600=18:30,這樣算max-age不對,真實環境要這樣算,max-age過期為http頭中的Age=600過期.
注:Age域值是緩存服務器估計從響應產生或被原始服務器重新證實以來的總時間.age的值是緩存服務器算出來的,原始服務器是沒有的.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM