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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络中缓存技术,编程达人

發(fā)布時間:2024/7/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络中缓存技术,编程达人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

計算機緩存也就是通常說的Cache,對計算機編程有所了解的應該都知道,緩存常與Redis聯(lián)系在一起,但是Redis僅僅是應用中的一部分。

1、瀏覽器緩存

瀏覽器面對的問題是網(wǎng)絡訪問的速度遠遠低于本地訪問的速度,每次都訪問造成網(wǎng)絡開銷太大,于是就增加了一個中間層:開辟“緩存”區(qū)域,緩存JS, HTML, CSS,圖片等各種文件。瀏覽器遵循一定的規(guī)則來判斷什么時候用緩存中的文件,什么時候去訪問服務器的新文件。在服務器發(fā)給瀏覽器的響應中,有expires, max-age, last-modified等,Header, expires 和 max-age 定義了一個資源的過期時間, last-modified和Etag用來檢查一個資源在服務器端有沒有變化。

瀏覽器緩存示意圖

流程如下:

地址欄中輸入網(wǎng)址,按回車以后瀏覽器會使用Expires,max-age來查看本地緩存的內(nèi)容是否失效,如果沒有,就直接使用 。

瀏覽器刷新按鈕的時候瀏覽器不再考慮Expires,max-age, 而是把Last-Modified / ETag 發(fā)到服務器去,問問服務器,這個文件有更新沒有?如果沒有,那就用本地緩存的文件,如果有更新,用服務器端最新的。

強制刷新的時候不使用任何緩存,直接向服務器發(fā)出新請求。

數(shù)據(jù)配置項

2、CDN

如果客戶端離服務器距離比較遠,網(wǎng)速會慢,體驗會差;海量的用戶給后端服務器帶來巨大壓力,所以CDN就采用了就近訪問的方案:把后端服務器的數(shù)據(jù)數(shù)據(jù)復制多份,挪到離客戶端比較近的“服務器中,不但減少了訪問的時間,還大大降低了 “中央”服務器的負載。 瀏覽器緩存和CDN是配合使用的, 瀏覽器的本地緩存失效以后,就需要向后端服務器來獲取了,但是如果系統(tǒng)有CDN,瀏覽器還可以就近訪問CDN,這樣用戶體驗就不會差。

是否使用CDN對比

3、Page Cache

操作系統(tǒng)的時間是按納秒為單位的,雖然內(nèi)存和硬盤都在同一臺機器中,沒有網(wǎng)絡開銷,但是硬盤實在是太慢,比內(nèi)存慢幾萬倍, 內(nèi)存等不及。 所以操作系統(tǒng)也增加了一個抽象層:Page cache , 把硬盤的文件緩存在其中。 幾乎所有的文件讀寫操作都依賴Page Cache,在向硬盤寫入文件的時候,并不是直接把文件內(nèi)容寫入硬盤以后才返回的,而是寫入到內(nèi)核的Page Cache就直接返回了。 當從硬盤讀取文件時,也不是直接把數(shù)據(jù)從硬盤復制到用戶態(tài)的內(nèi)存,而是先復制到內(nèi)核的Page Cache ,然后再復制到用戶態(tài)的內(nèi)存。

4、應用程序緩存

應用程序緩存大家都很熟悉, 因為數(shù)據(jù)庫訪問速度慢,無法應對大量的并發(fā)訪問,所以增加一個緩存中間層,把最火熱的數(shù)據(jù)從數(shù)據(jù)庫中取出,放到快速訪問的內(nèi)存中。應用程序的緩存也是個雙刃劍,雖然提升了訪問效率, 但帶來了很多問題:

應用程序、緩存、數(shù)據(jù)庫三者關系圖

代碼變復雜

需要處理緩存和數(shù)據(jù)庫之間的數(shù)據(jù)一致性問題

存在穿透,雪崩等問題

應用程序緩存現(xiàn)在已經(jīng)變成了分布式的集群形式,數(shù)據(jù)管理很麻煩。

5、CPU緩存

雖說內(nèi)存速度快, 可是在CPU面前,內(nèi)存也只能屈居下風,CPU比內(nèi)存快的多得多,數(shù)據(jù)和指令必須從內(nèi)存加載到CPU才能執(zhí)行, 為了解決速度匹配問題就在CPU內(nèi)增加緩存中間層,不過必須用硬件來實現(xiàn)。

CPU、CPU緩存、內(nèi)存關系圖

CPU的緩存包括L1、L2、 L3這三級Cache,把最火熱的訪問數(shù)據(jù)放入到其中。

在L1 Cache 最靠近CPU,速度最快,可以分為指令Cache (CPU要執(zhí)行的指令)和數(shù)據(jù)Cache(指令要操作的數(shù)據(jù))。 CPU Cache 和上面提到的各種Cache比起來,小得可憐,也就是幾百K到幾M。 所以這些Cache要想發(fā)揮真正的作用,必須得依賴規(guī)矩局部性原理:

時間局部性:如果程序中的某條指令一旦執(zhí)行,則不久之后該指令可能再次被執(zhí)行;如果某數(shù)據(jù)被訪問,則不久之后該數(shù)據(jù)可能再次被訪問。

空間局部性:指一旦程序訪問了某個存儲單元,則不久之后。其附近的存儲單元也將被訪問。

總結(jié)

對于數(shù)據(jù)讀寫不匹配的問題,一般的解決辦法就是增加一個空間層,用空間的冗余來換取時間的匹配,同時要遵循下列原則:

數(shù)據(jù)的讀操作遠大于寫操作

數(shù)據(jù)計算過程比較耗時

數(shù)據(jù)是某個數(shù)據(jù)源的數(shù)據(jù)備份

數(shù)據(jù)訪問遵循“局部性原理”

總結(jié)

以上是生活随笔為你收集整理的计算机网络中缓存技术,编程达人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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