緩存技術
緩存是為了調節速度不一致的兩個或多個不同的物質的速度,在中間對速度較快的一方起到一個加速訪問速度較慢
的一方的作用,比如CPU的一級、二級緩存是保存了CPU最近經常訪問的數據,內存是保存CPU經常訪問硬盤的數
據,而且硬盤也有大小不一的緩存,甚至是物理服務器的raid 卡有也緩存,都是為了起到加速CPU 訪問硬盤數據
的目的,因為CPU的速度太快了,CPU需要的數據由于硬盤往往不能在短時間內滿足CPU的需求,因此PCU緩存、
內存、Raid 卡緩存以及硬盤緩存就在一定程度上滿足了CPU的數據需求,即CPU 從緩存讀取數據可以大幅提高
CPU的工作效率。
參考資料:http://www.sohu.com/a/246498483_468626
1.1 系統緩存
1.1.1 buffer與cache
buffer:緩沖也叫寫緩沖,一般用于寫操作,可以將數據先寫入內存在寫入磁盤,buffer 一般用于寫緩沖,用于解決不同介質的速度不一致的緩沖,先將數據臨時寫入到里自己最近的地方,以提高寫入速度,CPU會把數據先寫到內存的磁盤緩沖區,然后就認為數據已經寫入完成看,然后由內核在后續的時間在寫入磁盤,所以服務器突然斷電會丟失內存中的部分數據。
cache:緩存也叫讀緩存,一般用于讀操作,CPU讀文件從內存讀,如果內存沒有就先從硬盤讀到內存再讀到
CPU,將需要頻繁讀取的數據放在里自己最近的緩存區域,下次讀取的時候即可快速讀取。
1.1.2 cache的保存位置
客戶端:瀏覽器
內存:本地服務器、遠程服務(如:redis,memcached)
硬盤:本機硬盤、遠程服務器硬盤(如:NFS存儲)
1.1.3 Cache的特性
自動過期:給緩存的數據加上有效時間,超出時間后自動過期刪除
強制過期:源網站更新圖片后CDN是不會更新的,需要強制是圖片緩存過期 ,通過CDN管理后臺實現
命中率:即緩存的讀取命中率
1.2 用戶層緩存
1.2.1 DNS緩存
默認為60秒,即60秒之內在訪問同一個域名就不在進行DNS解析: 查看chrome瀏覽器的DNS緩存:
chrome://net-internals/#dns
1.2.2 火狐瀏覽器緩存
about:cache
1.2.3 瀏覽器緩存過期機制
1.2.3.1 最后修改時間
系統調用文件的時候會獲取文件的最后修改時間,和本地瀏覽器緩存中的文件時間相比,如果沒有發生變化就返回給瀏覽器304的狀態碼,表示沒有發生變化,然后瀏覽器就使用的本地的緩存展示資源,如果服務端返回最后修改時間沒有發生過變化,則直接使用瀏覽器的本地緩存,狀態碼就是304
1.2.3.2 Etag標記
基于Etag標記是否一致做判斷頁面是否發生過變化,比如基于Nginx 的etag on來實現。
過期時間
以上兩種都需要發送請求,即不管資源是否過期都要發送請求進行協商,這樣會消耗不必要的時間,因此有了緩存
的過期時間,即第一次請求資源時響應報文帶有資源的過期時間,默認為30天,當前此方式使用的比較多,但是無法保證客戶的時間都是準確并且一致的,因此會加入一個最大生存周期,使用用戶本地的時間計算緩存數據是否超過多少天,下面的過期時間Expires:為2028年,但是緩存的最大生存周期Cache-Control: max-age=315360000,計算為天等于3650天即10年,過期時間如下:
本文鏈接:http://www.thecarconnectin.com/35458.html
網友評論comments