Web前端開發程序員的自我修養:常見緩存種類有什麼?
很多初學前端開發的程序員都不是很清楚緩存這個概念,今天千鋒廣州前端小編就詳細給大家介紹一下,下面一起來看看吧!
緩存可以讓原本打開很慢的頁面,變得能“秒開”。在我們平時訪問的APP、網站幾乎都有涉及到緩存的運用,因此緩存也成為每一個前端人員必須要掌握的技術。在接下來小編就給大家介紹一下常見的幾種緩存。
想要掌握緩存,你需要了解兩個重要的運用方式:預讀取和延遲寫。
預讀取就是預先讀取將要載入的數據,也可以稱作「緩存預熱」。就是在系統對外提供服務之前,先將硬盤中的一部分數據加載到內存中,然後再對外提供服務。
延遲寫是指通過緩存機制來加速“寫”的過程。是預先將需要寫入到磁盤或者數據庫的數據,先暫時寫入到內存,然後就返回成功。再定時將內存中的數據批量寫入到磁盤。
簡單來説,預讀取是在數據出口加了一道前置的緩衝區。而延遲寫就是在數據入口後面加了一道後置的緩衝區。
接下來就是Web前端入門課程的重頭戲——常見的緩存種類。
瀏覽器緩存
這是離用户最近的可以作為緩存的地方,而且藉助的是用户的“資源”(緩存的數據在用户的終端設備上),性價比可謂最好,讓用户幫你分擔壓力。瀏覽器緩存是在於用户側的緩存點,所以我們對其的掌控力就差很多,在沒有發起新請求的情況下,你無法主動去更新數據。
CDN緩存
提供CDN服務的服務商將數據分發到這些遍佈各地服務器上作為緩存,讓用户訪問就近的服務器上的緩存數據,就可以起到壓力分攤和加速效果。這在ToC類型的系統上運用,效果格外顯著。不過由於節點眾多,更新緩存數據比較緩慢,一般至少是分鐘級別。所以一般僅適用於不經常變動的靜態數據
網關(代理)緩存
常用的網關(代理)緩存有Varnish、Squid、Ngnix。一般情況下,簡單的緩存運用場景用nginx即可,因為大部分時候我們會用它來做負載均衡,能少引入一個技術就少一份複雜度。如果是大量的小文件可以使用Varnish,而Squid則相對大而全,運用成本也更高一些
進程內緩存
將一些數據緩存在站點,或者服務的進程內,這就是進程內緩存。進程內緩存的實現載體,最簡單的,可以是一個帶鎖的Map。也可以使用第三方庫,例如leveldb。進程內緩存的好處是,數據讀取不再需要訪問後端,例如數據庫。
進程外緩存
即我們常用的各種分佈式緩存,redis、memcached之類。進程外緩存相比進程內緩存會慢些,但存儲空間可以橫向擴展,不受限制。
數據庫緩存
數據庫緩存是數據庫的內部機制,一般都會給出設置緩存空間大小的配置來讓你進行干預。數據庫緩存也叫內存殺手,基本上你給多少內存就能吃多少。