開(kāi)發(fā)常說(shuō)的「緩存」到底是什么?
你有沒(méi)有遇到過(guò)這種場(chǎng)景:
當(dāng)開(kāi)發(fā)發(fā)布好項(xiàng)目后,讓你線上體驗(yàn)時(shí),你總是刷到老的頁(yè)面,
接著開(kāi)發(fā)就會(huì)說(shuō):有緩存,“強(qiáng)刷”一下頁(yè)面,新的頁(yè)面就出來(lái)了。
然后你操作一番,新頁(yè)面就真的出來(lái)了。
這是為啥呢?今天就給大家做個(gè)解釋。
1. 什么是緩存?為什么要使用緩存?
說(shuō)的通俗點(diǎn),緩存就是臨時(shí)存放數(shù)據(jù)的一個(gè)“地方”。
緩存有什么作用呢?
使用緩存,都是為了提升性能。
比如你使用了瀏覽器的“HTTP緩存”來(lái)緩存靜態(tài)資源(就是html/css/js文件),
當(dāng)你第一次訪問(wèn)一個(gè)網(wǎng)站時(shí),瀏覽器會(huì)發(fā)起請(qǐng)求從云端拉取,這時(shí)候?yàn)g覽器就會(huì)把html、css、js緩存在瀏覽器內(nèi)存中,
當(dāng)你第二次再訪問(wèn)這個(gè)網(wǎng)站時(shí),瀏覽器首先會(huì)檢測(cè)緩存中是否存在這些目標(biāo)文件,
如果存在的話就直接從緩存中讀取,否則就發(fā)起請(qǐng)求讀取。
直接從緩存中讀取文件的話,就加快了頁(yè)面打開(kāi)的速度。
這就解答了開(kāi)篇說(shuō)的問(wèn)題啦,當(dāng)我們發(fā)布新版本時(shí),其實(shí)每個(gè)更改了的文件的文件名基本都會(huì)發(fā)生變化的,
但是html文件的名字是不會(huì)變的,如果html被緩存了,那么你發(fā)布了新版本,
當(dāng)你訪問(wèn)網(wǎng)站時(shí),那極有可能訪問(wèn)到的還是緩存里面的html文件。
所以你看到的還是老的頁(yè)面。那么這該如何解決呢?
其實(shí)我們是可以設(shè)置緩存時(shí)間的,一般會(huì)把html緩存時(shí)間設(shè)置的短一點(diǎn),
比如1小時(shí),或者是直接不緩存html文件,這個(gè)策略就看具體的業(yè)務(wù)場(chǎng)景啦。
還有一個(gè)辦法就是上文說(shuō)的“強(qiáng)刷”啦,其實(shí)“強(qiáng)刷” 就是清緩存的一個(gè)操作。
2. 緩存的分類(lèi)和應(yīng)用場(chǎng)景
緩存的種類(lèi),按照緩存的“地方”不同,我們可以分成以下類(lèi)型:
1. 瀏覽器緩存
瀏覽器緩存指的是緩存數(shù)據(jù)在瀏覽器內(nèi)存中。
瀏覽器緩存還可以細(xì)分為HTTP緩存、localstorage、sessionstorage、indexDB等等。
這里有點(diǎn)超綱了。我就講我們最常見(jiàn)的HTTP緩存吧。
HTTP緩存就是上文提到的“頁(yè)面緩存”啦。
我們可以設(shè)置緩存的文件類(lèi)型、緩存的時(shí)間。
2. 服務(wù)器緩存
服務(wù)器緩存指的是緩存數(shù)據(jù)在服務(wù)器中。
我們最常見(jiàn)的服務(wù)器緩存就是redis,相信有些同學(xué)也聽(tīng)過(guò)。
redis一般用來(lái)緩存不經(jīng)常變化的數(shù)據(jù),比如登錄態(tài)。
目的是為了降低數(shù)據(jù)庫(kù)壓力和加快訪問(wèn)數(shù)據(jù)的速度。
服務(wù)器緩存還可以細(xì)分redis、kafka、CDN等等。
到這里就講完啦~
咱們下期見(jiàn)!??
? ?
--- end?----
????產(chǎn)品經(jīng)理的技術(shù)思維之降級(jí)思維
????微信掃碼背后隱藏的秘密
? ??效率工具推薦(第10期)
? ?
