做筆記,上來就直接幹了
當直接在瀏覽器中輸入一個URL,或者點擊一個鏈接的時候,那麼瀏覽器緩存就會起作用,如果緩存沒有過期,那麼瀏覽器會從本地讀取資源,不會發起HTTP請求,如果緩存過期,那麼瀏覽器會發起新的瀏覽器請求。按ctrl+F5
,瀏覽器會清空本地緩存,重新請求資源。 Expires
是HTTP/1.0的緩存頭, Cache-Control: max-age
是HTTP/1.1是用來進行HTTP緩存的頭。
Expires指定了資源過期的絕對時間,GMT格式,Cache-Control: max-age指定了資源過期的相對時間,單位是秒。
在支持HTTP/1.1的瀏覽器上,如果發送兩個頭,那麼Cache-Control: max-age會覆蓋掉Expires;
在支持HTTP/1.0的瀏覽器上,即使發送了兩個頭,但是隻有Expires會起作用,所以爲了兼容老的瀏覽器,還是要同時發送這兩個頭。
設置HTTP緩存,需要安裝expires_module,其會發送Expires和Cache-Control: max-age兩個HTTP頭。配置如下:
<IfModule expires_module> ExpiresActive On ExpiresByType application/x-javascript "access plus 30 days" ExpiresByType text/css "access plus 30 days" ExpiresByType image/gif "access plus 30 days" ExpiresByType image/jpeg "access plus 30 days" ExpiresByType image/png "access plus 30 days" </IfModule>
# HTML文檔的有效期是最後修改時刻後的一星期
ExpiresByType text/html M604800
A86400意指瀏覽時起算1天.格式是代碼加上秒數.代碼有分兩種,”A”等同”access”,意指瀏覽時起算過期時間.使用代碼”A”比較適合應用 在不常變動的網頁文件類型,例如圖片.另外一種代碼是”M”,其意義等同於”modification”,指的是網頁文件的”最後編輯時間”
下面兩種寫法一個意思
ExpiresByType image/gif A2592000
ExpiresByType application/x-javascript "access plus 30 days"
表示對js資源設置Expires
和Cache-Control: max-age
頭,其中Expires
的值是以客戶端訪問資源的時間爲基準的後30天,Cache-Control: max-age
的值是3600x24x30秒。
兩種寫法是有區別的,在前面用squid 緩存的時候
修改時間如果短很容易過期,過期後squid會一直請求後端apache
比如
squid的日誌
[27/Sep/2015:10:51:12 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:10:57:00 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:10:58:03 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:00:34 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:00:52 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:01:13 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:04:13 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:06:29 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:06:39 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:07:09 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:08:27 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:12:34 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
修改後
[27/Sep/2015:11:14:53 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:16:47 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:19:44 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:24:48 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:26:09 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:27:36 TCP_IMS_HIT:HIER_NONE
後端apache幾乎沒有日誌,以前一直304
2 當瀏覽器刷新的時候 squuid 還是後請求源服務器,因爲瀏覽器會發起
refresh_pattern -i .gif$ 0 50% 4320 ignore-reload
refresh_pattern -i .bmp$ 0 50% 4320 ignore-reload
refresh_pattern -i .jpg$ 0 50% 4320 ignore-reload
refresh_pattern -i .png$ 0 50% 4320 ignore-reload
refresh_pattern -i .swf$ 0 50% 4320 ignore-reload
refresh_pattern -i .mp3$ 0 50% 4320 ignore-reload
refresh_pattern -i .wmv$ 0 50% 4320 ignore-reload
refresh_pattern -i .rm$ 0 50% 4320 ignore-reload
refresh_pattern -i .mpeg$ 0 50% 4320 ignore-reload
refresh_pattern -i .wma$ 0 50% 4320 ignore-reload
refresh_pattern -i .exe$ 0 50% 4320 ignore-reload
refresh_pattern . 0 20% 4320