日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)

發(fā)布時(shí)間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在網(wǎng)絡(luò)上,有一些緩存服務(wù)器,另外瀏覽器自身也有緩存功能。

例如:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><img src="./a.jpg" alt=""> </body> </html>

第 1 次訪問該頁(yè)面時(shí),正常下載圖片,返回值是 200:  

響應(yīng)頭的抓包分析:

?

?

基于一個(gè)前提——圖片不會(huì)經(jīng)常改動(dòng),服務(wù)器在返回 200 的同時(shí),還返回該圖片的特征值(簽名 ETag),當(dāng)瀏覽器再次訪問該圖片時(shí),就回去服務(wù)器椒鹽 ETag,如果圖片沒有變化,則直接使用緩存中的圖片,減輕了服務(wù)器的負(fù)擔(dān):

響應(yīng)頭的抓包分析:

?自(If-Modified-Since 的)時(shí)間點(diǎn)后圖片修改過,則重新請(qǐng)求;如果圖片最新的簽名(ETag)和上次返回(If-None-Match)的值不匹配,則重新請(qǐng)求。此時(shí)響應(yīng)值是 304,瀏覽器從本地取緩存,節(jié)省了圖片在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)間。

請(qǐng)求頭的 If-None-Match 和 響應(yīng)頭的 Etag 對(duì)應(yīng),請(qǐng)求頭的 If-Modified-Since 和 響應(yīng)頭的 Last-Modified 對(duì)應(yīng)。

?

?

HTTP Cache-Controll 請(qǐng)求頭信息

在大型網(wǎng)站中,如何處理主服務(wù)器和緩存服務(wù)器之間的問題:要不要緩存和緩存多久,需要用到?HTTP Cache-Controll 請(qǐng)求頭信息

步驟:

① 主服務(wù)器需要開啟 mod_expires 模塊(Apache 服務(wù)器)

利用該擴(kuò)展來(lái)控制圖片、css、html 等文件是否緩存以及緩存的生命周期,

?

② 在當(dāng)前目錄下新建 .htaccess 文件

語(yǔ)法

ExpiresDefault "<base> [plus] {<num> <type>}*" ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"

?

后面 4 個(gè)參數(shù)分別表示

base:基于哪個(gè)時(shí)間點(diǎn)來(lái)計(jì)算緩存有效期,有兩個(gè)值:access/now,now 等價(jià)于 access,表示基于請(qǐng)求響應(yīng)的那一瞬間;另一個(gè)值是 modification,表示被請(qǐng)求文件的最后修改日期,比如被修改后的一周內(nèi)仍然有效

?

plus:可選參數(shù)

?

num:緩存時(shí)間的大小(30)

?

type:緩存時(shí)間的單位(天)

?

【例】

給 jpg 圖片設(shè)置 1 個(gè)月的生存周期  

.htaccess:

ExpiresActive On ExpiresByType image/jpeg "access plus 1 month"

執(zhí)行頁(yè)面,抓包分析:

  

如果在集群環(huán)境中,緩存服務(wù)器得到此圖片,將會(huì)認(rèn)為在一個(gè)月內(nèi)有效,減輕了主服務(wù)器的負(fù)擔(dān)。

?

?

設(shè)置服務(wù)器不讓用緩存

比如有些個(gè)人信息不允許緩存服務(wù)器緩存,必須到主服務(wù)器請(qǐng)求。

可以利用 apache 服務(wù)器的 mod_headers 模塊?

?

在 .htaccess 中追加信息

.htaccess:

ExpiresActive On ExpiresByType image/jpeg "access plus 1 month"<FileMatch "\.(gif|png)$"> header set Cache-Controll "no-store,must-revalidate" <FileMatch>

使用正則表達(dá)式,設(shè)置當(dāng)圖片是 gif 或 png 格式的圖片時(shí),不允許緩存。

?

修改 cache-01.html  

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><img src="./a.jpg" alt=""><img src="./php.gif" alt=""> </body> </html>

執(zhí)行文件,抓包分析:

  

多次刷新頁(yè)面,php.gif 的響應(yīng)值都是 200。

?

新浪微博(不允許緩存)的抓包圖:

?

總結(jié)

以上是生活随笔為你收集整理的HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。