當前位置:首頁 » 文件管理 » 數據緩存策略

數據緩存策略

發布時間: 2022-09-21 12:25:35

⑴ 瀏覽器緩存機制

有dns的地方,就有緩存。瀏覽器、操作系統、Local DNS、根域名伺服器,它們都會對DNS結果做一定程度的緩存。

DNS查詢過程如下:

首先搜索瀏覽器自身的DNS緩存,如果存在,則域名解析到此完成。
如果瀏覽器自身的緩存裡面沒有找到對應的條目,那麼會嘗試讀取操作系統的hosts文件看是否存在對應的映射關系,如果存在,則域名解析到此完成。
如果本地hosts文件不存在映射關系,則查找本地DNS伺服器(ISP伺服器,或者自己手動設置的DNS伺服器),如果存在,域名到此解析完成。
如果本地DNS伺服器還沒找到的話,它就會向根伺服器發出請求,進行遞歸查詢。

瀏覽器本地緩存失效後,瀏覽器會向CDN邊緣節點發起請求。類似瀏覽器緩存,CDN邊緣節點也存在著一套緩存機制。CDN邊緣節點緩存策略因服務商不同而不同,但一般都會遵循http標准協議,通過http響應頭中的
Cache-control: max-age 的欄位來設置CDN邊緣節點數據緩存時間。

當瀏覽器向CDN節點請求數據時,CDN節點會判斷緩存數據是否過期,若緩存數據並沒有過期,則直接將緩存數據返回給客戶端;否則,CDN節點就會向伺服器發出回源請求,從伺服器拉取最新數據,更新本地緩存,並將最新數據返回給客戶端。 CDN服務商一般會提供基於文件後綴、目錄多個維度來指定CDN緩存時間,為用戶提供更精細化的緩存管理。

CDN 優勢
CDN節點解決了跨運營商和跨地域訪問的問題,訪問延時大大降低。
大部分請求在CDN邊緣節點完成,CDN起到了分流作用,減輕了源伺服器的負載。

http請求報文(request)
請求行
請求方法  空格  URL 空格  協議版本 回車符 換行符
請求頭(通用信息頭、請求頭、實體頭)
頭部欄位名 冒號  值  回車鍵 換行符
...
頭部欄位名 冒號  值  回車鍵 換行符
空行
回車符   換行符
實體主體(只有post請求有)
主體

http響應報文(response)
狀態行
協議版本  空格  狀態碼 空格  狀態碼描述 回車符 換行符
響應頭部
頭部欄位名 冒號  值   回車符 換行符
...
頭部欄位名 冒號  值   回車符 換行符
空行
回車符   換行符
響應正文
正文

瀏覽器初次向伺服器發起請求後拿到請求結果,會根據響應報文中HTTP頭的緩存標識,決定是否緩存返回的結果,是則將請求結果和緩存標識存入瀏覽器緩存中

瀏覽器每次發起請求,都會現在瀏覽器緩存中查找該請求的結果以及緩存標識
瀏覽器                瀏覽器緩存        伺服器

——————第一次發起http請求——————>

<——沒有該請求的緩存結果和緩存標識————

——————————————發起http請求——————————————>

<——————————返回該請求結果和緩存規則————————————

——將請求結果和緩存標識存入瀏覽器緩存——>

強制緩存就是向瀏覽器緩存查找結果,並根據該結果的緩存規則來決定是否使用該緩存結果的過程

強制緩存的情況分為三種:
1、不存在該緩存結果和緩存標識,強制緩存失效,直接向伺服器發起請求
2、存在該緩存結果和緩存標識,但結果已經失效,強制緩存失效,使用協商緩存
3、存在該緩存結果和緩存標識,且該結果沒有失效,強制緩存生效,直接返回該結果

控制強制緩存的欄位:Expires,Cache-Control

Expires 是 HTTP/1.0 控制緩存的欄位,值為伺服器返回該請求的結果緩存時間
即再次發送請求是,客戶端時間 小於 Expires的值,直接使用緩存結果

Cache-Control 是HTTP/1.1的規則,主要用於控制網頁緩存,主要取值為:
public:所有的內容都緩存(客戶端和代理伺服器都可以緩存)
private:所有內容只有客戶端可以緩存(默認值)
no-cache:客戶端緩存內容,但是是否使用緩存則需要經過協商緩存來驗證決定
no-store:即不使用強制緩存,也不使用協商緩存
max-age=xxx:緩存內容將在xxx秒後失效

Expires 是一個絕對值
Cache-Control 中 max-age 是相對值,解決了 Expires時期 服務端與客戶端 可能出現時間差的問題

註:Expires和Cache-Control同時存在時,只有Cache-Control生效

協商緩存就是強制緩存失效後,瀏覽器攜帶緩存標識向伺服器發起請求,由伺服器根據緩存標識決定是否使用緩存的過程

協商緩存的兩種情況:
1、協商緩存生效,返回304,繼續使用緩存
過程:
瀏覽器                 瀏覽器緩存     伺服器

————————發起http請求————————>

<——該請求的緩存結果失效,只返回緩存標識——

————————攜帶該資源的緩存標識,發起http請求————————>

<—————————————304,該資源無更新————————————

——————獲取該請求的緩存結果——————>

<——————返回該請求的緩存結果——————

2、協商緩存失敗,返回200和請求結果
過程:
瀏覽器                 瀏覽器緩存     伺服器

————————發起http請求————————>

<——該請求的緩存結果失效,只返回緩存標識——

————————攜帶該資源的緩存標識,發起http請求————————>

<————————200,資源已更新,重新返回請求和結果———————

——將該請求結果和緩存標識存入瀏覽器緩存中—>

協商緩存的標識也是在響應報文的HTTP頭中和請求結果一起返回給瀏覽器的

控制協商緩存的欄位:
(1) Last-Modified/If-Modified-Since:Last-Modified是伺服器響應請求是,返回該資源文件在伺服器最後被修改的時間;If-Modified-Since再次發起請求時,攜帶上次返回的Last-Modified的值,伺服器將該欄位值與該資源最後修改時間對比,決定是否用緩存
(2)Etag/If-None-Match:Etag伺服器響應請求時,返回當前資源文件的一個唯一標識,由伺服器生成之;If-None-Match是再次發起請求時,攜帶上次返回的唯一標識Etag的值,伺服器收到後,將該欄位值與該資源在伺服器上的Etag對比,一致 則返回304,否則返回200

註:Etag/If-None-Match優先順序高於Last-Modified/If-Modified-Since,同時存在時只有Etag/If-None-Match生效

瀏覽器緩存分為:內存緩存 和 硬碟緩存

內存緩存特性:
(1)快速讀取:內存緩存會將編譯解析後的文件,存入該進程的內存中,便於下次運行時快速讀取
(2)時效性:一旦關閉進程,進程內存清空

硬碟緩存特性:
永久性:直接寫入硬碟文件中
復雜、緩慢:讀取緩存對該緩存存放的硬碟文件進行I/O操作,重新解析

from memory cache:使用內存中的緩存

from disk cache:使用硬碟中的緩存

瀏覽器讀取順序:memory ——> disk

瀏覽器將js和圖片等文件解析執行後直接存入內存緩存中,F5刷新頁面時,from memory cache(使用內存中的緩存)
css文件存入硬碟中,F5刷新頁面時,from disk cache(使用硬碟中的緩存)

參考文章
https://segmentfault.com/a/1190000017962411
https://www.cnblogs.com/chengxs/p/10396066.html

⑵ 11.33數據緩存的好處是什麼,如何實現數據緩存

資料庫緩存的作用是只在數據第一次被訪問時才從資料庫中讀取數據,將數據放在存儲介質中,以後查詢相同的數據則直接從存儲介質(內存)中返回,這樣速度有明顯的提升。
為了更好的使用數據緩存,應注意以下幾點:
1、如果一個實體標記了緩存屬性,則無論該類是 通過ID查詢還是其它方式的查詢得到的結果,都會自動緩存。 所以,不必擔心結果是否能夠按照預期的需要緩存。
2、查詢緩存如何使用? 在CastleActiveRecord中的查詢類沒有提供對查詢緩存的支持,只能使用NHibernate的查詢才可以,例子如上所述。
3、緩存的性能,緩存在一定程度上可以提高應用的性能,但需要正確使用,如果使用不慎,緩存反而成為負擔,比如,在應用中如果使用NHibernate.Caches.Prevalence 作為緩存提供程序,如果數據量大,它要在指定目錄下寫入緩存文件,IO消耗相當大,雖然資料庫訪問少了,但是應用的IO卻增長,還不如不使用緩存。因此,使用緩存時應盡量避免使用文件型緩存,應使用內存型緩存。
4、緩存的策略。查詢緩存應只對只讀性數據進行緩存,如果是經常讀寫的數據,可能造成數據不一致,至於造成數據不一致的原因沒有花時間根究。
5、如果實體有繼承關系,必須在被繼承的類上也標記使用 緩存,否則,子類的緩存無效。
6、如果對查詢進行緩存,必須實體也要標記緩存,否則查詢緩存無效。

⑶ u盤怎麼緩存數據

滑鼠右鍵單擊電腦u盤圖標,點擊「屬性」選項,找到u盤屬性窗口,選中「硬體」標簽,點擊u盤磁碟驅動器,單擊「屬性」按鍵,選中裡面的「策略」標簽,單擊「快速刪除(默認)」選項,再單擊「確定」按鍵即可。x0dx0aUSB盤USB盤,簡稱U盤,另作優盤,是U盤[5]的諧音。屬於移動存儲設備,用於備份數據,方便攜帶。U盤是快閃記憶體的一種,因此也叫閃盤。特點是小巧便於攜帶、存儲容量大、價格便宜。一般的U盤容量有1G、2G、4G、8G、16G、32G、64G等。x0dx0a更多關於u盤怎麼緩存數據,進入:https://www.abcgonglue.com/ask/3419bd1615821314.html?zd查看更多內容

⑷ 地圖緩存使用指南

地圖緩存是快速訪問地圖服務的有效方式。目前流行在線地圖服務,如 Google Maps,MapBar,BingMaps 等,對瀏覽速度和並發性要求都比較高,均採用緩存地圖的方式滿足快速訪問地圖的需求。

什麼是地圖緩存?

作為一種改善地圖瀏覽用戶體驗的優化策略,地圖緩存實際上是包含了一系列比例尺一定地圖范圍內的地圖切片文件。在服務端創建地圖緩存之後,客戶端的地圖操作,比如放大、縮小和平移,都會向服務端發送一個 URL 請求,此時,服務端按照請求返回預先生成的地圖切片,從而達到降低伺服器負擔並快速顯示地圖,提升地圖瀏覽速度。

為什麼使用地圖緩存?

使用地圖緩存時,只需要付出一次生成緩存的代價,就可以提供給客戶端地圖顯示以快速的響應速度。地圖緩存是以一系列不同比例尺下地圖圖片形式提供的,因此不受普通地圖顯示上的約束,比如地圖信息量的大小、地物的復雜程度、是否帶有標注、所使用的地圖符號等的限制。因為,一般情況下,地圖渲染的細節越多,承載的信息量越豐富,同等環境下,繪制矢量地圖就越慢,但使用了地圖緩存,客戶端在獲得了同樣顯示效果的同時,等待時間卻大大縮短。特別是對海量數據,使用緩存可以極大地提高瀏覽速度,加速地圖響應時間,最終提升用戶體驗。

SuperMap產品針對海量數據,在保證客戶端高效訪問的前提下,提供了一套完備的二三維緩存體系。SuperMap iDesktop 8C 桌面產品支持生成影像緩存、地形緩存、矢量緩存、模型緩存、地圖緩存,還可以對場景直接生成場景緩存。生成的緩存數據可以有多種方式在地圖窗口或者場景窗口中載入,也可以部署到服務端進行發布,方便客戶端進行瀏覽。

為了幫助用戶深入了解SuperMap 的地圖緩存技術、有效使用 SuperMap 產品生成和發布地圖緩存等,本專題文檔就地圖緩存的相關內容進行闡述。

1. 地圖緩存的目錄結構

地圖緩存根據緩存版本的不同,生成的緩存目錄的層次結構有所不同。SuperMap iDesktop 7C 桌面應用程序目前支持六種不同版本的地圖緩存。

地圖緩存的目錄結構主要採用 iServer6R,iServer 2.0和 IS .NET 三種緩存策略,按照不同比例尺級別進行分層,都是從指定范圍的左上角為起點進行分塊。其中2.0,2.1版本的地圖緩存均採用 IS .NET 緩存策略,3.0,3.1版本的地圖緩存均採用 iServer 2.0 緩存策略,4.0和5.0版本的緩存採用 iServer 6R 緩存策略。

下面就這三種緩存版本的目錄結構做詳細的介紹。

1.1. iServer 6R 緩存目錄結構說明

iServer 6R 是針對 UGC(UniversalGIS Class)系列產品的緩存策略。UGC 系列產品包括桌面產品 SuperMap iDesktop 7C,組件式二次開發平台 SuperMap Objects java/.NET 6R 以及伺服器產品 SuperMapiServer 6R 系列產品。

iServer 6R 緩存策略生成的地圖緩存目錄共分為六個層次,如下圖所示:

圖:iServer 6R 緩存目錄結構說明

第一層:緩存根目錄,用來保存不同緩存文件。緩存根目錄名稱可以為任意名稱。在生成緩存時,通過輸入緩存名稱來指定。

第二層:地圖緩存目錄。默認名稱格式為:MapName_Width×Height。其中MapName

是地圖名稱,Width 和 Height 是16進制的圖片寬高,例如,目錄為世界地圖_Day_100×100,表示地圖緩存的圖片大小為256像素×256像素。

第三層:不同比例尺級別緩存目錄。分層目錄名稱為設置的比例尺大小。如15625000文件夾下保存的是比例尺為15625000時的所有地圖切片文件。

第四層:不同空間區域行號緩存目錄。目錄名稱以空間區域(緩存范圍)行號命名。所謂空間區域指的是將地圖按照網格分塊演算法將一幅地圖分為多個塊,每一個分塊表示一個空間區域。每個空間區域的寬高都是緩存塊的整數倍。區域內至少有一張圖片,行號就是空間區域在指定范圍內的行數,行號從上到下逐漸增大,用十進製表示。范圍擴大時行號可以是負值。

第五層:不同空間區域列號緩存目錄。目錄名稱以空間區域(緩存范圍)列號命名。列號就是空間區域在指定范圍內的列數,列號從左到右逐漸增大,用十進製表示。范圍擴大時列號可以是負值。

第六層:緩存圖片文件名稱。其格式為:RowxCol_MapHashCode.postfix。其中 Row 表示緩存圖片按緩存塊劃分的行號索引,Col 表示緩存圖片按緩存分塊劃分的列號索引,Row 和 Col 都可以是負數。MapHashCode 表示當前比例尺下地圖的16位 HashCode 值,postfix 是緩存圖片文件的擴展名。如上圖中的名稱為 0000×0001_108F8B08FIX.png 的圖片,0000為行號,0001為列號,108F8B08FIX 為16位的 HashCode,png 為圖片的擴展名。

1.2. IS .NET 緩存目錄結構說明

IS .NET 緩存策略是SuperMap 最早使用的緩存策略,也是通過分層分塊生成切片文件(影像)的思路進行緩存構建,並且從坐標系、地圖、圖層風格以及數據范圍等方面考慮了緩存更新問題。它主要是 SFC(SuperMap Foundation Class)系列產品採用的緩存策略。

IS .NET 緩存策略生成的二維地圖緩存目錄共分為五個層次,如下圖所示:

第一層:緩存根目錄,用來保存不同緩存文件。緩存根目錄名稱可以為任意名稱。在生成緩存時,通過輸入緩存名稱指定。

第二層:地圖緩存目錄。默認名稱格式為:MapName_Width×Height。其中 MapName 是地圖名稱,Width 和 Height 是16進制的圖片寬高,例如,目錄為世界地圖_Day_100×100,表示地圖緩存的圖片大小為256像素×256像素。

第三層:不同比例尺級別緩存目錄。分層目錄名稱為設置的比例尺大小。如15625000文件夾下保存的是比例尺為15625000時的地圖切片文件。

第四層:圖片索引目錄。按照網格分塊演算法將某一比例尺下的地圖切割成多個圖幅,每一個圖幅在整個地圖中都有一個索引值對應,形為:X×Y。X,Y 分別表示圖幅在地圖分塊隊列中的列號和行號。

第五層:緩存圖片文件名稱。其格式為:centerIndex_MapHashCode.postfix,其中centerIndex 表示緩存圖片的中心點索引,MapHashCode 表示當前比例尺下地圖的 HashCode 值,postfix 是緩存圖片文件的擴展名。如上圖所示,名稱為332×7361_108F8BFIX.png 的圖片,(332,7361)表示圖片中心點的索引值,108F8BFIX 為當前比例尺下地圖的 HashCode 值,png 為圖片的後綴名。

1.3. iServer 2.0 緩存目錄結構說明

iServer 2.0 緩存策略與 IS .NET緩存策略相似,是 SuperMap iServer 2.0 產品的緩存策略。iServer 2.0 緩存策略生成的二維地圖緩存目錄共分為五個層次,如下圖所示:

圖:iServer 2.0緩存目錄結構說明

第一層:緩存根目錄,用來保存不同緩存文件。緩存根目錄名稱可以為任意名稱。在生成緩存時,通過輸入緩存名稱指定。

第二層:地圖緩存目錄,文件夾名稱格式為:MapName_Width×Height,其中 Width×Height 按照10進制計算,即目錄名稱為:地圖名稱_圖片的實際寬×高。

第三層:不同比例尺級別緩存目錄。分層目錄名稱為設置的比例尺大小。如15625000文件夾下保存的是比例尺為15625000時的地圖切片文件。

第四層:緩存圖片索引目錄({Index_x})。將地圖分塊之後,對每一個圖片分別建立索引號。對每一副地圖,按照要生成的緩存圖片大小生成 M×N 個圖片,每一列為 Index_x,x 的值從 0 到 N-1,每一行為 Index_y,y 的值從 0 到 M-1。在這一層,目錄名為每一列的索引名,即 Index_x,表示每一列圖片緩存的目錄。

第五層:緩存圖片文件名稱。其格式為:Index_y.postfix的值。如上圖中選中的文件夾,文件夾5表示 X 索引號(Index_x)為5 ,圖片名稱15表示 Y 索引號(Index_y)為15,則此圖片位於地圖目錄的第5行第15列。

2. 地圖緩存存儲類型

SuperMap 緩存有兩種存儲類型,即原始型與緊湊型。

2.1. 原始型

當緩存儲存類型為原始型,切片文件以單獨的圖片文件格式存放在磁碟上,不對數據進行壓縮,能夠直接讀取。地圖緩存數據直觀地表現為多個文件夾下的原始圖片。

原始型存儲方式具有以下特點:

l 可以直接讀取,比較直觀。

l 佔用磁碟空間大,不太易於管理,拷貝和遷移不太方便。

l 對密級較高的數據,不能設置密碼

2.2. 緊湊型

當緩存儲存類型為緊湊型時,對原始的切片文件採用一定的壓縮和加密機制,在結構上採用一組文件替代原始的圖片格式的緩存機制。此時,不同比例尺文件夾下的緩存數據將表現為一組文件,該組文件包括兩個部分:索引文件(.sc)、一組數據文件(.sc00和*.lock)。如下圖所示,為世界地圖_Day 生成的緊湊型緩存文件。

其中,索引文件為 *.sc(SuperMapCache File)格式;數據文件為 *.scXX(SuperMap Caceh File Data)格式,這里的 XX 不是兩個字母,是兩個16進制數字(00~FF)。目前只支持兩位16進制數,所以最多支持256個數據文件。數據文件的個數由緩存數據的大小決定,一個數據文件最大為2G。

與原始型相比,緊湊型存儲方式具有以下優勢:

3. 使用地圖緩存的建議

為了更高效的生成地圖緩存,可以從以下幾個方面考慮:

3.1. 選擇合適的比例尺系列

為了充分利用緩存數據,同時實現多級縮放,可以對地圖設置多個比例尺。多設置一些比例尺級別,可以在瀏覽過程中比較順暢,不會出現比較大的跳躍。在地圖製作的過程中要考慮要素在不同的比例尺下是否需要顯示。比如在1:100000的比例尺下,河流是線狀的,在1:10000的比例尺下,可能需要講河流顯示為面狀的。在小比例尺下,一些注記不需要顯示,但隨著比例尺的擴大,注記可能需要顯示。這種情況下,需要考慮合適的比例尺級別了。

3.2. 緩存路徑設置

如果生成的緩存要在 SuperMapiServer Java 6R 服務端發布,可以直接將 SuperMap iDesktop 7C 桌面緩存路徑設置為 SueprMap iServer Java 6R 的出圖路徑下,即 %SuperMapiServer Java_HOME%webappsiserveroutputcache,否則緩存切片拷貝可能會花費比較長的時間。

3.3. 適當的製作地圖

製作地圖的過程中,可以考慮對線型或者文本對象使用反走樣,對過小的對象進行過濾。

對地圖中的過小對象使用過濾條件進行過濾,可以在不影響地圖所承載的信息量的情況下,將提升地圖瀏覽速度。

進行反走樣後矢量地圖中的線型和文本看起來更光滑,提高視覺感受,但會造成性能下降。因此在使用反走樣時,需要瀏覽速度和性能之間尋找一種平衡,既要達到瀏覽效果最佳,也要保證瀏覽速度。

對比較復雜的地圖,要避免對象節點過多,可以考慮進行光滑處理或者重采樣。

3.4. 保持工作空間一致

工作空間中的地圖參數決定了SuperMap iServer Java 使用的緩存文件中緩存圖片的命名,因此需要保證用於製作緩存的工作空間中的地圖和用於 SuperMap iServer Java 發布的工作空間中的地圖一致。影響參數包括地圖的風格、數據的連接情況、圖層順序、默認比例尺、地圖范圍等。因此製作完成緩存後,盡量不要對工作空間的地圖進行修改,以保證發布的地圖與用於製作緩存的地圖一致。

同時需要保持地圖中所有地圖可用,所有圖層對應的數據集合數據源在工作空間中都存在,不能有無對應數據源和數據集的空連接圖層。對數據集中對象的編輯,如添加、刪除、更新等,不會影響編輯區域以外的緩存圖片(如果需要的話,只需更通過 SuperMap iServer 更新這部分區域的緩存即可)。

3.5. 合理設置地圖緩存范圍和索引范圍

可以為頻繁訪問的地圖區域生成緩存,以降低生成和存儲緩存的成本。例如,在訪問世界地圖時,對於廣大的無人區,可以不生成緩存。

用 SuperMap iDesktop7C 生成地圖緩存時建議將索引范圍設置為發布地圖的整幅地圖范圍,以便與SuperMap iServer Java 緩存索引范圍保持一致。在根據需求修改地圖緩存的范圍信息時,也需要保持索引范圍是整幅地圖范圍。

緩存圖片與出圖設備無關的特性

利用 SuperMap iDesktop7C 製作地圖緩存時,如果 SuperMap iDesktop 7C 所在的計算機與 SuperMap iServer Java 所在的計算機不是同一台機器,有可能由於設備顯示地圖解析度不同,從而不同設備上的緩存不能很好地一起使用,例如拼接出現問題等。SuperMap iDesktop 7C 桌面支持配置地圖緩存與設備顯示解析度無關。具體的操作方法如下:

3.6. 在 SuperMap iDesktop7C 桌面端生成的地圖緩存,如需在 SueprMap iServer Java 服務端發布,需要注意,生成緊湊型地圖緩存時,不要對緩存進行加密,即不要設置密碼,否則在服務端發布會有問題。

⑸ JAVA幾種緩存技術介紹說明

1、TreeCache / JBossCache

JBossCache是一個復制的事務處理緩存,它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制,讓你輕松進行JBoss伺服器之間 的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。

2、WhirlyCache

Whirlycache是一個快速的、可配置的、存在於內存中的對象的緩存。它能夠通過緩存對象來加快網站或應用程序的速度,否則就必須通過查詢資料庫或其他代價較高的處理程序來建立。

3、SwarmCache

SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。

4、JCache

JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。

5、ShiftOne

ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。

⑹ 哪位了解java數據緩存技術有哪些

一、什麼是緩存
1、Cache是高速緩沖存儲器 一種特殊的存儲器子系統,其中復制了頻繁使用的數據以利於快速訪問
2、凡是位於速度相差較大的兩種硬體/軟體之間的,用於協調兩者數據傳輸速度差異的結構,均可稱之為 Cache

常見的緩存技術有哪些?

一、操作系統緩存

1、文件系統提供的Disk Cache:操作系統會把經常訪問到的文件內容放入到內存當中,由文件系統來管理

2、當應用程序通過文件系統訪問磁碟文件的時候,操作系統從Disk Cache當中讀取文件內容,加速了文件讀取速度

3、Disk Cache由操作系統來自動管理,一般不用人工干預,但應當保證物理內存充足,以便於操作系統可以使用盡量多的內存充當Disk Cache,加速文件讀取速度

4、特殊的應用程序對文件系統Disk Cache有很高的要求,會繞開文件系統Disk Cache,直接訪問磁碟分區,自己實現Disk

5、Cache策略

  • Oracle的raw device(裸設備) – 直接拋棄文件系統

  • MySQL的InnoDB: innodb_flush_method = O_DIRECT

二、資料庫緩存

    緩存策略:a、Query Cache;b、Data Buffer

三、應用程序緩存

包括對象緩存、查詢緩存、頁面緩存

四、web伺服器端緩存

  • 基於代理伺服器模式的Web伺服器端緩存,如squid/nginx

  • Web伺服器緩存技術被用來實現CDN(內容分發網路 content delivery network)

  • 被國內主流門戶網站大量採用

  • 不需要編程,但僅限於新聞發布類網站,頁面實時性要求不高

五、基於ajax的瀏覽器緩存

  • 使用AJAX調用的時候,將資料庫在瀏覽器端緩存

  • 只要不離開當前頁面,不刷新當前頁面,就可以直接讀取緩存數據

  • 只適用於使用AJAX技術的頁面

⑺ u盤如何緩存數據

滑鼠右鍵單擊電腦u盤圖標,點擊「屬性」選項,找到u盤屬性窗口,選中「硬體」標簽,點擊u盤磁碟驅動器,單擊「屬性」按鍵,選中裡面的「策略」標簽,單擊「快速刪除(默認)」選項,再單擊「確定」按鍵即可。
USB盤USB盤,簡稱U盤,另作優盤,是U盤[5]的諧音。屬於移動存儲設備,用於備份數據,方便攜帶。U盤是快閃記憶體的一種,因此也叫閃盤。特點是小巧便於攜帶、存儲容量大、價格便宜。一般的U盤容量有1G、2G、4G、8G、16G、32G、64G等。
更多關於u盤怎麼緩存數據,進入:https://www.abcgonglue.com/ask/3419bd1615821314.html?zd查看更多內容

⑻ Okhttp解析(五)緩存的處理

大家好,之前我們講解了Okhttp網路數據請求相關的內容,這一節我們講講數據緩存的處理。本節按以下內容講解Okhttp緩存相關的內容。

緩存的使用場景很多,通過它可以將數據通過一定的規則存儲起來,再次請求數據的時候就可以快速從緩存中讀取了,緩存有以下優勢。

HTTP本身提供了一套緩存相關的機制。這套機制定義了相關的欄位和規則,用來客戶端和服務端進行緩存相關的協商,如響應的數據是否需要緩存,緩存有效期,緩存是否有效,伺服器端給出指示,而客戶端則根據服務端的指示做具體的緩存更新和讀取緩存工作。http緩存可以分為兩類:

強制緩存,在緩存數據未失效的情況下,可以直接使用緩存數據,有兩個欄位Expires和Cache-Control用於標明失效規則。

表示過期時間,由服務端返回。那麼下次請求數據時,判斷這個Expires過期時間是否已經過了,如果還沒有到過期時間,則使用緩存,如果過了過期時間,則重新請求伺服器的數據。Expires格式如下:

不過因為伺服器和客戶端的時間並不是同步的,用一個絕對時間作為過期的標記並不是很明智,所以HTTP1.1之後更多的是Cache-Control,它的控制更加靈活。

表示緩存的控制,有服務端返回。它有以下幾個取值:

默認情況下是private,也就是不能共享的。Cache-Control格式如下:

對比緩存,表示需要和服務端進行相關信息的對比,由伺服器決定是使用緩存還是最新內容,如果伺服器判定使用緩存,返回響應嗎304,判定使用最新內容,則返回響應碼200和最新數據。對比緩存的判定欄位有兩組:

ETag表示資源的一種標識信息,用於標識某個資源,由服務端返回,優先順序更高。格式如下:

然後客戶端再次請求時,加入欄位If-None-Match,格式如下:

服務端收到請求的該欄位時(之前的Etag值),和資源的唯一標識進行對比,如果相同,說明沒有改動,則返回狀態碼304,如果不同,說明資源被改過了,則返回狀態碼200和整個內容數據。

Last-Modified表示資源的最近修改時間,由服務端返回,優先順序更低。格式如下:

Last-Modified
由伺服器返回,表示響應的數據最近修改的時間。


If-Modified-Since
由客戶端請求,表示詢問伺服器這個時間是不是上次修改的時間。如果服務端該資源的修改時間小於等於If-Modified-Since指定的時間,說明資源沒有改動,返回響應狀態碼304,可以使用緩存。如果服務端該資源的修改時間大於If-Modified-Since指定的時間,說明資源又有改動了,則返回響應狀態碼200和最新數據給客戶端,客戶端使用響應返回的最新數據。

Last-Modified欄位的值(服務端返回的資源上次修改時間),常常被用於客戶端下次請求時的If-Modified-Since欄位中。

HTTP的緩存規則是優先考慮強制緩存,然後考慮對比緩存。

Okhttp緩存相關的類有如下:

要開啟使用Okhttp的緩存其實很簡單,只需要給OkHttpClient對象設置一個Cache對象即可,創建一個Cache時指定緩存保存的目錄和緩存最大的大小即可。

那麼下面我們來看看Okhttp緩存執行的大概流程

Okhttp的緩存流程分為讀取緩存和存儲緩存兩個過程,我們分別分析。

讀取使用緩存的流程從HttpEngine的sendRequest發送請求開始。

接下來我們分析

從Cache的get方法開始。它按以下步驟進行。

如果存在緩存的話,在指定的緩存目錄中,會有兩個文件「****.0」和「****.1」,分別存儲某個請求緩存的響應頭和響應體信息。(「****」是url的md5加密值)對應的ENTRY_METADATA響應頭和ENTRY_BODY響應體。緩存的讀取其實是由DiskLruCache來讀取的,DiskLruCache是支持Lru(最近最少訪問)規則的用於磁碟存儲的類,對應LruCache內存存儲。它在存儲的內容超過指定值之後,就會根據最近最少訪問的規則,把最近最少訪問的數據移除,以達到總大小不超過限制的目的。

接下來我們分析CacheStrategy緩存策略是怎麼判定的。

直接看CacheStrategy的get方法。緩存策略是由請求和緩存響應共同決定的。

接來下我們看看CacheControl類里有些什麼。

可以發現,它就是用於描述響應的緩存控制信息。

然後我們再看看Okhttp存儲緩存是怎麼進行的。

存儲緩存的流程從HttpEngine的readResponse發送請求開始的。

可以看到這里先通過maybeCache寫入了響應頭信息,再通過cacheWritingResponse寫入了響應體信息。我們再進去看Cache的put方法實現。

我們繼續看Cache的writeTo方法,可以看到是寫入一些響應頭信息。

到這里Okhttp緩存的讀取和存儲流程我們就清楚了。可以說,緩存的使用策略基本都是按照HTTP的緩存定義來實現的,所以對HTTP緩存相關欄位的理解是很重要的。然後關於DiskLruCache是如何管理緩存文件的,這個其實也很好理解,首先的原則就是按照LRU這種最近最少使用刪除的原則,當總的大小超過限定大小後,刪除最近最少使用的緩存文件,它的LRU演算法是使用LinkedHashMap進行維護的,這樣來保證,保留的緩存文件都是更常使用的。具體實現大家可以分析DiskLruCache和LinkedHashMap的實現原理。

⑼ 常見的緩存策略有哪些,如何做到緩存與 db 里的數據一致性

您: 種writer-reader架構般思路緩存更新階段由writer解決致性問題資料庫數據變化同步更新redis並確保緩存更新功 作完整性判斷檢查全部屬性數據使用自增版本號(或間戳)判斷否新 作置檢測優化降低掃描代價針近間周期內(依0min)資料庫更新數據集合應該比較redis進行檢查代價比較

⑽ hibernate 緩存策略usage read-only和read-write有什麼區別

二級緩存是session間共享的,適用於對象數據頻繁共享,數據變化頻率低。
read-only是只讀型,緩存不更新,適用於不發生改變的數據,效率最高,事務隔離級別最低,
read-write讀寫型,緩存在數據變化時觸發更新,適用於變化的數據,
nonstrict-read-write不嚴格讀寫型,緩存不定期更新,適用於變化頻率低的數據,

transactional事務型,緩存在數據變化時更新,並且支持事務,效率最低,事務隔離級別最高。
只知道這么多,希望對你有幫助。

熱點內容
termux如何搭建伺服器 發布:2024-10-10 10:18:05 瀏覽:736
中國石化的電話服務密碼是多少 發布:2024-10-10 10:16:46 瀏覽:41
婚紗店宣傳片視頻腳本 發布:2024-10-10 10:08:55 瀏覽:868
android寫入文件 發布:2024-10-10 10:08:11 瀏覽:434
怎麼打開文件夾的路徑 發布:2024-10-10 10:08:06 瀏覽:60
ec伺服器怎麼有小提示 發布:2024-10-10 10:08:04 瀏覽:494
我的世界迪士尼神奇寶貝伺服器地址 發布:2024-10-10 09:03:02 瀏覽:559
win7存儲並顯示 發布:2024-10-10 09:02:30 瀏覽:552
oracle資料庫導出 發布:2024-10-10 08:34:56 瀏覽:364
androidn特性 發布:2024-10-10 08:30:41 瀏覽:730