為了提高站點的訪問速度,使用緩存來優(yōu)化。緩存主要分為 強緩存和協(xié)商緩存。
協(xié)商緩存
主要分為last-modified、etag。下面我主要通過代碼修改來表現(xiàn)各個緩存之間的區(qū)別。先討論協(xié)商緩存。last-modified表示文件的修改日期,如果文件做了修改那就應該重新獲取文件。last-modified是文件修改后根據(jù)服務器的時間生成。
如果我們修改了文件則會重新獲取,status就為200
再次刷新就會返回304表示緩存已經(jīng)是最新不需要再更新。
請求中會詢問相關文件修改時間(If-Modified-Since)
請求
響應
ETag:是一個可以與Web資源關聯(lián)的記號(token)
如果文件被替換,就會生成唯一的etag。
替換前的文件
替換后的文件
PS: 如果是使用了多臺服務器做負載均衡的話,會出現(xiàn)etag不一致問題。Apache 的默認ETag的值總是由文件的索引節(jié)點(Inode)、大小(Size)、最后修改時間(MTime)決定,我們只需要去掉Inode即可
強緩存相比協(xié)商緩存更為徹底,在強緩存下瀏覽器不會對服務器發(fā)起請求。
強緩存:主要分為expires和cache-control
Expires: 表示存在時間,允許客戶端在這個時間之前不去檢查(發(fā)請求),等同max-age的 效果。但是如果同時存在,則被Cache-Control的max-age覆蓋。 格式: Expires :時間,后面跟一個時間或者日期,超過這個時間后緩存失效。也就是瀏覽器發(fā)出請求之前,會檢查這個時間是否失效,若失效,則瀏覽器會重新發(fā)出請求。
開啟apache expires_mod之后,瀏覽器在第一次將資源請求之后會緩存。
Cache-Control
Cache-Control 在 HTTP 響應頭中,用于指示代理和 UA 使用何種緩存策略。比如:
cache-control中設置max-age 為最長的緩存時間。在該時間內(nèi)則使用緩存。
設置為no-cache之后則不會再進行緩存。
在使用apache對瀏覽器緩存進行測試過程中發(fā)現(xiàn)。在不設置 cache-control的情況下,瀏覽器會根據(jù)自身的情況去取舍相關的緩存,可以從這查看。如果大家在服務器配置過程中發(fā)現(xiàn),自己沒有配置任何的緩存信息但是瀏覽器卻緩存了資源就不用驚訝。
【相關推薦:JavaScript視頻教程】
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。