當前位置:首頁 » 文件管理 » webcache緩存

webcache緩存

發布時間: 2024-02-05 13:50:54

① WebCache web的緩存機制

1.webcache的簡單介紹

 web緩存,是一種 緩存技術 ,用於臨時存儲(緩存)的網頁文件,如HTML頁面和圖像等靜態資源,減少帶寬以及後端伺服器的壓力,通常一個WebCache也是一個 反向代理軟體 ,既可以通過緩存響應用戶的請求,當本地沒有緩存時,可以代理用戶請求至後端主機。

WebCache分為正向和反向之分,一般正向WebCache不常用,這次主要以反向WebCache為主。

2.webcache的由來

 1)由於程序具有局部性,而局部性分為: 時間局部性和空間局部性

A.時間局部性是指:在單位時間內,大部分用戶訪問的數據只是熱點數據(熱點數據指經常被訪問的數據)

B.空間局部性是指:某新聞網站突然出來一個重大新聞,此新聞會被被反復訪問。

3.webcache的變化性

  WebCache的新鮮度監測機制 :數據都是可變的,所以緩存中的內容要做新鮮度檢測.

4.緩存相關的HTTP首部:

HTTP協議提供了多個首部用以實現 頁面緩存及緩存失效 的相關功能,這其中最常用的有:

1)Expires:HTTP/1.0,用於指定某web對象的過期日期/時間,通常為GMT格式;一般不應該將此設定過長的時間,一年的長度對大多場景來說足矣;其常用於為 純靜態內容 如javaScripts樣式表或圖片指定緩存周期;

(2)Cache-Control:為了解決HTTP/1.0中對於新鮮度控制的策略而生,通過相對時間來控制緩存使用期限;

(3)Etag:響應首部,用於在 響應報文中為某web資源定義版本標識符 ;

(4)Last-Mofified:響應首部,用於回應客戶端關於Last-Modified-Since或If-None-Match首部的請求,以通知客戶端其請求的web對象最近的修改時間;

(5)If-Modified-Since:條件式請求首部,基於 請求內容的時間戳作驗正 ,如果後端伺服器數據的時間戳未發生改變則繼續使用,反之亦然.

(6)If-None-Match:條件式請求首部; 通過Etag來跟後端伺服器進行匹配 ,如果數據的Etag未發生改變,既不匹配,則響應新數據,否則繼續使用當前數據.

(7)Vary:響應首部,原始伺服器根據請求來源的不同響應的可能會有所不同的首部,最常用的是 Vary: Accept-Encoding,用於通知緩存機制其內容看起來可能不同於用戶請求時 Accept-Encoding-header首部標識的編碼格式;

(8)Age:緩存伺服器可以發送的一個額外的響應首部,用於指定響應的有效期限;瀏覽器通常根據此 首部決定內容的緩存時長;如果響應報文首部還使用了max-age指令,那麼緩存的有效時長為 「max-age減去Age」的結果;

② 現在的微型計算機普遍配置cache是為了解決什麼

Caché,是 一種後關系型資料庫。能並發訪問同一數據的資料庫技術。

它獨一無二地提供了三核物種整合的、能並發訪問同一數據的資料庫技術:成熟的對象訪問方式,高性能的 SQL 訪問方式以及豐富的多維訪問。在對象數據、關系型數據以及多維數據視圖之間不需要映射,這樣就大大節省了開發和運行時間。

(2)webcache緩存擴展閱讀

Caché的作用:

(Caché提供了快速 Web 應用開發、高速的事務處理、大規模的擴展性、對事務數據的實時查詢。 Caché運行概述對Caché架構和性能進行了深層次的描述。 Caché的技術優勢主要在為什麼選擇Caché這一文檔中稱述。

在小冊子以多維引擎全面整合對象和 SQL 中,你可以了解到後關系型技術更多的優勢。 Caché問與答中主要回答了一些關於Caché的常見問題,以及為什麼增值商和企業選擇Caché來提升他們應用的性能。

熟悉Caché的訪問者可能想知道Caché 5 (最新的版本)磨核的情況,請訪問有哪些新增和升級的功能。文檔Caché:為專業開發者改游液而設計告訴了你Caché是如何滿足獨立軟體開發商需求的。

參考資料來源

網路-Caché

③ 瀏覽器緩存和伺服器緩存

一、瀏覽器緩存

瀏覽器緩存即http緩存;瀏覽器緩存根據是否需要向伺服器重新發起HTTP請求將緩存過程分為兩個部分,分別是 強制緩存 和 協商緩存  。

瀏覽器第一次請求資源的時候伺服器會告訴客戶端是否應該緩存資源,根據響應報文中HTTP頭的緩存標識,決定是否緩存結果,是則將請求結果和緩存標識存入瀏覽器緩存中。如下圖:

1.強制緩存 :瀏覽器會對緩存進行查找,並根據一定的規則確定是否使用緩存。

強制緩存的緩存規則?

HTTP/1.0 Expires 這個欄位是絕對時間,比如2018年6月30日12:30,然後在這個時間點之前的請求都會使用瀏覽器緩存,除非清除了緩存。

這個欄位的缺點就是只會同步客戶端的時間,這就有可能修改客戶端時間導致緩存失效。

HTTP/1.1 cache-Control       這個是1.1的時候替換Expires的,它會有幾種取值:

public :所有內容都將被緩存(客戶端和代理伺服器都可緩存)

private :所有內容只有客戶端可以緩存, Cache-Control的默認取值

no-cache :客戶端緩存內容,但是是否使用緩存則需要經過協商緩存來驗證決定

no-store :所有內容都不會被緩存,即不使用強制緩存,也不使用協商緩存

max-age=xxx (xxx is numeric) :緩存內容將在xxx秒後失效

比如max-age=500,則在500秒內再次請求會直接只用緩存。

優先性:cache-Control > Expires

如果同時存在,cache-Control會覆蓋Expires。

這個欄位的缺點就是:

如果資源更新的速度是秒以下單位,那麼該緩存是不能被使用的,因為它的時間單位最低是秒。

如果文件是通過伺服器動態生成的,那麼該方法的更新時間永遠是生成的時間,盡管文件可能沒有變化,所以起不到緩存的作用。

上圖中瀏覽器緩存中存在該資源的緩存結果,並且沒有失效,就會直接使用緩存的內容。

上圖中瀏覽器緩存中沒有該資源的緩存結果和標識,就會直接向伺服器發起HTTP請求。

2.協商緩存: 瀏覽器的強制緩存失效後(時間過期),瀏覽器攜帶緩存標識請求伺服器,由伺服器決定是否使用緩存。

伺服器決定的規則?

控制協商緩存的欄位有 Last-Modified / If-Modified-Since 和 Etag / If-None-Match。

①Last-Modified 是伺服器返回給瀏覽器的本資源的最後修改時間。

當下次再次請求的時候,瀏覽器會在請求頭中帶 If-Modified-Since ,即上次請求下來的 Last-Modified 的值,

然後伺服器會用這個值和該資源最後修改的時間比較,如果最後修改時間大於這個值,則會重新請求該資源,返回狀態碼200。

如果這個值和最後修改時間相等,則會返回304,告訴瀏覽器繼續使用緩存。

② Etag 是伺服器返回的一個hash值。

當下次再次請求的時候,瀏覽器會在請求頭中帶 If-None-Match ,即上次請求下來的 Etag 值,

然後伺服器會用這個值和該資源在伺服器的 Etag 值比較,如果一致則會返回304,繼續使用緩存;如果不一致,則會重新請求,返回200。

二、伺服器緩存

上面是一個簡單的流程圖:

用戶1訪問A頁面,伺服器解析A頁面返回給用戶1,同時在伺服器內存上做一定映射,把A頁面緩存在硬碟上面

用戶2訪問A頁面,伺服器直接根據內存上的映射找到對應的頁面緩存,直接返回給用戶2,這樣就減少了伺服器對同一頁面的重復解析

伺服器緩存和瀏覽器緩存的區別:

伺服器緩存是把頁面緩存到伺服器上的硬碟里,而瀏覽器緩存是把頁面緩存到用戶自己的電腦里

Nginx伺服器 

Nginx是一個高性能的HTTP和反向代理伺服器。具有非常多的優越性:

在連接高並發的情況下,Nginx是Apache伺服器不錯的替代品,Nginx在美國是做虛擬主機生意的老闆們經常選擇的軟體平台之一。

Nginx提供了expires、etag、if-modified-since指令來實現瀏覽器緩存控制。

nginx -s reload#重新載入配置文件 

nginx -s reopen#重新打開log文件 

nginx -s stop#快速關閉nginx服務 

nginx -s quit #優雅的關閉nginx服務,等待工作進程處理完所有的請求

Nginx設置靜態文件的緩存過期時間 

location ~.*\.(js|css|html|png|jpg)$ {

  expires 3d;

}

 expires    3d;//表示緩存3天

expires    3h;//表示緩存3小時

expires    max;//表示緩存10年

expires    -1;//表示永遠過期。

如果設置為-1在js、css等靜態文件在沒有修改的情況下返回的是http 304,如果修改返回http 200

對於靜態資源會自動添加ETag,可以通過添加etag off指令禁止生成ETag。如果是靜態文件,那麼Last-Modified值為文件的最後修改時間。

在開發調試web的時候,經常會碰到因瀏覽器緩存(cache)而經常要去清空緩存或者強制刷新來測試的煩惱,提供下apache不緩存配置和nginx不緩存配置的設置。在常用的緩存設置裡面有兩種方式,都是使用add_header來設置:分別為Cache-Control和Pragma。

location ~ .*\.(css|js|swf|php|htm|html )$ {

  add_header Cache-Control no-store;

  add_header Pragma no-cache;

  }

nginx gzip壓縮

使用 gzip 壓縮可以降低網站帶寬消耗,同時提升訪問速度。

主要在nginx服務端將頁面進行壓縮,然後在瀏覽器端進行解壓和解析,

目前大多數流行的瀏覽器都遲滯gzip格式的壓縮,所以不用擔心。

默認情況下,Nginx的gzip壓縮是關閉的,同時,Nginx默認只對text/html進行壓縮

gzip on;

ersio #開啟gzip壓縮輸出

gzip_http_vn 1.0 ;#默認1.1

#其中的gzip_http_version的設置,它的默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮

#如果我們使用了proxy_pass進行反向代理,那麼nginx和後端的upstream server之間是用HTTP/1.0協議通信的。

gzip_vary on ;

#和http頭有關系,加個vary頭,給代理伺服器用的,有的瀏覽器支持壓縮,有的不支持,

#所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮

gzip_comp_level 6;

#設置gzip壓縮等級,等級越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大 1-9

gzip_proxied any;

#Ngnix作為反向代理的時候啟用

#expample:gzip_proxied no-cache;

# off – 關閉所有的代理結果數據壓縮

# expired – 啟用壓縮,如果header中包含」Expires」頭信息

# no-cache – 啟用壓縮,如果header中包含」Cache-Control:no-cache」頭信息

# no-store – 啟用壓縮,如果header中包含」Cache-Control:no-store」頭信息

# private – 啟用壓縮,如果header中包含」Cache-Control:private」頭信息

# no_last_modified – 啟用壓縮,如果header中包含」Last_Modified」頭信息

# no_etag – 啟用壓縮,如果header中包含「ETag」頭信息

# auth – 啟用壓縮,如果header中包含「Authorization」頭信息

# any – 無條件壓縮所有結果數據

gzip_types text/html ;#壓縮的文件類型

#設置需要壓縮的MIME類型,非設置值不進行壓縮

#param:text/html|application/x-javascript|text/css|application/xml

gzip_buffers 16 8k; #設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間

#設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間

# param1:int 增加的倍數

# param2:int(k) 後面單位是k

# example: gzip_buffers 4 8k;

# Disable gzip for certain browsers.

gzip_disable 「MSIE [1-6].(?!.*SV1)」; #ie6不支持gzip,需要禁用掉ie6

④ java web開發緩存方案,ehcache和redis哪個更好

Ehcache
在java項目廣泛的陸塌使用。它是一個開源的、設計於提高在數據從RDBMS中取出來的高花費、高延遲採取的一種緩存方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0 license)、充滿特色(稍後會詳細介紹),所以被用於大型復雜分布式web application的各個節點中。
1. 夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試盯豎,Ehcache終被設計於large, high concurrency systems.
2. 夠簡單
開發者提供的介面非常簡單明了,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鍾。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於早則圓其他的開源項目
比如:hibernate
3.夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的發布版本不會到2M,V 2.2.3 才 668KB。
4. 夠輕量
核心程序僅僅依賴slf4j這一個包,沒有之一!
5.好擴展
Ehcache提供了對大數據的內存和硬碟的存儲,最近版本允許多實例、保存對象高靈活性、提供LRU、LFU、FIFO淘汰演算法,基礎屬性支持熱配置、支持的插件多
6.監聽器
緩存管理器監聽器 (CacheManagerListener)和 緩存監聽器(CacheEvenListener),做一些統計或數據一致性廣播挺好用的

⑤ 為什麼要禁用瀏覽器的緩存

1、什麼是瀏覽器緩存
瀏覽器緩存(Browser Caching)是為了節約網路的資源加速瀏覽,瀏覽器在用戶磁碟上對最近請求過的文檔進行存儲,當訪問者再次請求這個頁面時,瀏覽器就可以從本地磁碟顯示文檔,這樣就可以加速頁面的閱覽。
瀏覽器緩存主要有兩類:緩存協商:Last-modified ,Etag 和徹底緩存:cache-control,Expires。
2、網站緩存有什麼用,在瀏覽網頁過程中網站開發人員為了給用戶帶來更佳的瀏覽體驗,使網站載入快速高效往往會在瀏覽器本地也就是設備上面存儲緩存文件,因為網站或者web應用並不是實時大量內容的更新的,而是多數內容基本變化很小,因此在本地存儲一部分文件,這樣就不需要每次都重新載入全部的網站或者web應用信息,節省時間、流量,帶來更佳的訪問體驗。
3、為什麼要禁用瀏覽器緩存,在提升訪問速度,節省流量的同時,保存緩存文件肯定會占據一定的設備存儲空間,因此有些人在不需要追求時間流量的節省的時候,可以選擇禁用瀏覽器緩存,這樣瀏覽器不會在設備本地保存文件節省了存儲空間。

熱點內容
資料庫映射是什麼 發布:2025-01-20 05:41:52 瀏覽:981
中國植物資料庫 發布:2025-01-20 05:38:50 瀏覽:334
C語言能嗎 發布:2025-01-20 05:37:25 瀏覽:558
onedrive存儲位置 發布:2025-01-20 05:35:16 瀏覽:826
導航廣播怎麼存儲電台 發布:2025-01-20 05:35:14 瀏覽:310
歌的壓縮包 發布:2025-01-20 05:23:53 瀏覽:391
如何通過伺服器ip查到電話 發布:2025-01-20 05:02:34 瀏覽:8
我的世界伺服器被房主打 發布:2025-01-20 05:02:27 瀏覽:284
如何找到相同的配置 發布:2025-01-20 04:53:59 瀏覽:218
看linux版本 發布:2025-01-20 04:40:37 瀏覽:20