當前位置:首頁 » 文件管理 » 伺服器緩存技術

伺服器緩存技術

發布時間: 2023-08-07 07:26:55

1. 瀏覽器緩存和伺服器緩存

一、瀏覽器緩存

瀏覽器緩存即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

2. 電腦緩存是什麼

問題一:電腦緩存是什麼意思 電腦緩存(狹義)
計算機由於CPU運算的很快,而運算從內存讀取數據速度不夠,導致瓶頸(形象點,瓶頸是細細的,大量數據通過會造成堵塞,速度減緩),於是現代計算機採用的緩存技術,即在CPU在處理數據時先從緩存中提取數據(緩存內置在CPU中,它與CPU的數據交換速度遠大於內存),而緩存中的數據是從內存中提取的。
不管是什麼緩存,它的原理都是一樣的!快和慢之間通過緩沖帶進行過渡!

問題二:緩存是什麼意思呢? 電腦緩存又是什麼意思呢? 緩存是指臨時文件交換區,電腦把最常用的文件從存儲器里提出來臨時放在緩存里,就像把工具和材料搬上工作台一樣,這樣會比用時現去倉庫取更方便。因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在忙完後還是會把文件送到硬碟等存儲器里永久存儲。電腦里最大的緩存就是內存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給GPU用的緩存,硬碟上也有16M或者32M的緩存。千萬不能把緩存理解成一個東西,它是一種處理方式的統稱!

問題三:筆記本電腦緩存有啥用,什麼意思 許多人認為,「緩存」是內存的一部分
許多技術文章都是這樣教授的
但是還是有很多人不知道緩存在什麼地方,緩存是做什麼用的
其實,緩存是CPU的一部分,主要用於上網時零時暫存的一些東西,它存在於CPU中
CPU存取數據的速度非常的快,一秒鍾能夠存取、處理十億條指令和數據(術語:CPU主頻1G),而內存就慢很多,快的內存能夠達到幾十兆就不錯了,可見兩者的速度差異是多麼的大
緩存是為了解決CPU速度和內存速度的速度差異問題
內存中被CPU訪問最頻繁的數據和指令被復制入CPU中的緩存,這樣CPU就可以不經常到象「蝸牛」一樣慢的內存中去取數據了,CPU只要到緩存中去取就行了,而緩存的速度要比內存快很多
這里要特別指出的是:
1.因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速度就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。
2.因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的
3.關於一級緩存和二級緩存
為了分清這兩個概念,我們先了解一下RAM
ram和ROM相對的,RAM是掉電以後,其中才信息就消失那一種,ROM在掉電以後信息也不會消失那一種
RAM又分兩種,
一種是靜態RAM,SRAM;一種是動態RAM,DRAM。前者的存儲速度要比後者快得多,我們現在使用的內存一般都是動態RAM。
有的菜鳥就說了,為了增加系統的速度,把緩存擴大不就行了嗎,擴大的越大,緩存的數據越多,系統不就越快了嗎
緩存通常都是靜態RAM,速度是非常的快,
但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍),
價格高(同容量的靜態RAM是動態RAM的四倍),
由此可見,擴大靜態RAM作為緩存是一個非常愚蠢的行為,
但是為了提高系統的性能和速度,我們必須要擴大緩存,
這樣就有了一個折中的方法,不擴大原來的靜態RAM緩存,而是增加一些高速動態RAM做為緩存,
這些高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM緩存慢,
我們把原來的靜態ram緩存叫一級緩存,而把後來增加的動態RAM叫二級緩存。
一級緩存和二級緩存中的內容都是內存中訪問頻率高的數據的復製品(映射),它們的存在都是為了減少高速CPU對慢速內存的訪問。
通常CPU找數據或指令的順序是:先到一級緩存中找,找不到再到二級緩存中找,如果還找不到就只有到內存中找了

問題四:電腦中的緩沖和緩存是什麼意思 我想比較通俗的說法來告訴你緩沖:我想你問的是每次播放歌曲和電影時候的緩沖是什麼?對吧?其實你每次不論是看電影,還是聽歌,都是把電影和歌曲下載到了你的電腦上再進行 聽和看 。像一般的IE瀏覽器都是下載到這個路徑C:\Documents and Settings\用戶名(一般都是 「Administrator」)\Local Settings\Temporary Internet Files所以說緩沖其實就是已經下載到你電腦的部分緩存:緩存是一個為了提高數據傳輸速率的臨時存放區域。簡單的說就是臨時文件交換區。電腦中最大的一個緩存就是內存條;cup中也有緩存,切分等級,作用是為了提高cup與硬碟、內存、鍵鼠等之間的數據傳輸;硬碟、顯卡也都有緩存我想你差不多明白了吧!

問題五:電腦硬碟緩存是什麼 硬碟控制器的內存晶元是64MB緩存Cache memory是硬碟控制器上的一塊內存晶元具有極快的存取速度它是硬碟內部存儲和外界介面之間的緩沖器。因為硬碟的內部數據傳輸速度和外界介面傳輸速度不合緩存在個中起到一個緩沖的感化。緩存的大年夜小與速度是直接關繫到硬碟的傳輸速度的重要身分可以或許大年夜幅度地進步硬碟整體機能。當硬碟存取零碎數據時須要賡續地在硬碟與內存之間交換數據假如有大年夜緩存則可以將那些零碎數據暫存在緩存中減小外體系的負荷也進步了數據的傳輸速度。 硬碟的緩存重要起三種感化:一是預讀取。當硬碟受到CPU指令控制開端讀取數據時硬碟上的控制晶元會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中因為硬碟上數據存儲時是比較持續的所以讀取射中率較高當須要讀取下一個或者幾個簇中的數據的時刻硬碟則不須要再次讀取數據直接把緩存中的數據傳輸到內存中就可以了因為緩存的速度遠遠高於磁頭讀寫的速度所以可以或許達到明顯改良機能的目標;二是對寫入動作進行緩存。當硬碟接到寫入數據的指令之後並不會立時將數據寫入到碟片上而是先臨時存儲在緩存里然後發送一個數據已寫入 的旌旗燈號給體系這時體系就會認為數據已經寫入並持續履行下面的工作而硬碟則在餘暇不進行讀取或寫入的時刻時再將緩存中的數據寫入到碟片上。固然對於寫入數據的機能有必定晉升但也弗成避免地帶來了安然隱患――假如數據還在緩存里的時刻忽然掉落電那麼這些數據就會損掉。對於這個問題硬碟廠商們天然也有解決辦法:掉落電時磁頭會藉助慣性將緩存中的數據寫入零磁軌以外的暫存區域比及下次啟動時再將這些數據寫入目標地;第三個感化就是臨時存儲比來拜訪過的數據。有時刻某些數據是會經常須要拜訪的硬碟內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中再次讀取時就可以直接從緩存中直接傳輸。 大年夜容量的緩存固然可以在硬碟進行讀寫工作狀況下讓更多的數據存儲在緩存中以進步硬碟的拜訪速度但並不料味著緩存越大年夜就越出眾。緩存的應用存在一個演算法的問題即便緩存容量很大年夜而沒有一個高效力的演算法那將導致應用中緩存數據的射中率偏低無法有效發揮出大年夜容量緩存的優勢。演算法是懈弛存容量相輔相成大年夜容量的緩存須要更為有效力的演算法不然機能會大年夜大年夜扣頭從技巧角度上說高容量緩存的演算法是直接影響到硬碟機能發揮的重要身分。更大年夜容量緩存是將來硬碟成長的必定趨勢。

問題六:電腦CPU的緩存是什麼?舉例子說明 這是我回答別人問題的答案,和你問題類似,希望有幫助:
同樣核心構架 同樣緩存 同樣核心數量情況下 主頻高則處理速度快解釋一下:主頻表示時鍾頻率 cpu一般為上升沿或下降沿觸發 也就是說高電位變換到地電位時候 會從寄存器進行運位移一位 3.0Ghz就是一秒鍾電平變換3G次 用也就是進行3G次寄存器位移,那麼一秒鍾寄存器位移越多運算就越快但是,核心構架就好像 交通方式 好的核心構架就好像地下隧道 直達目的地 落後的構架就像土路 彎曲泥濘 在土路上開車速度120 也不沒有地下隧道騎電瓶車更快到達目的地 所以核心構架很關鍵還有緩存 一二三級緩存分別存放不同優先等級的指令 緩存越大 一次清空緩存之前進行的運算就越多 越小則需不斷清空才可以繼續運算 就像瘦子吃多頓搬一頓磚頭 壯漢猛吃一頓就搬一噸磚 核心數量就不說了 四個人幹活和一個人幹活效率不用比較

問題七:電腦介紹里的 幾MB緩存是什麼意思 有什麼用 作為臨時存儲器,這樣cpu再運算的時候會更快,實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的盯大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能

問題八:電腦緩存取決什麼配置 緩存是哪裡都有的,硬碟 U盤 CPU 內存 顯卡 都有,取決於大家

問題九:電腦中的 一級緩存 二級緩存 是屬於什麼的? 緩存
緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很小。
L1 Cache(一級緩存)是CPU第一層高速緩存,分為數據緩存和指令緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般伺服器CPU的L1緩存的容量通常在32―256KB。
L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,以前家庭用CPU容量最大的是512KB,現在筆記本電腦中也可以達到2M,而伺服器和工作站上用CPU的L2伐速緩存更高,可以達到8M以上。
L3 Cache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。
其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。
但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升。

問題十:電腦硬碟的緩存是干什麼的, 可以理解為暫存.因為硬碟的讀寫速度跟內存的速度不一樣。
舉個例子,假設有個生產玻璃珠的機器,你去取,它才會吐出來。
那麼,你要取1000個,它不可能一下子吐出來,因為你拿不去。現在在它的吐口處放個盒子(能裝大於1000顆),那麼它一下子吐完,可以閑置下來了。
你可以從盒子里分多次取。
緩存,讀寫小數據避免反復讀寫,起到暫時存放數據。

3. 1.16.5伺服器優化技術有哪些

伺服器優化技術主要有分布式緩存、非同步操作、使用集群以及代碼。
網站性能優化第一定律:優先考慮使用緩存優化性能。
緩存原理
(1)什麼是緩存?(將數據存儲在相對較高訪問速度的介質中,以供系統處理)
(2)緩存的優點:訪問速度快,如果需要計算可以減少計算時間
(3)緩存的本質是一張以鍵值對存儲的內存hash表
(4)主要用來存儲:讀寫比例高,很少變化的數據
(5)網站的訪問遵循28定律
合理使用緩存應該注意以下問題
(1)頻繁更新的數據(數據還沒有讀就已經失效,一般要求讀寫比在2:1以上才有意義)
(2)沒有熱點數據(無疑浪費資源)
(3)數據不一致與臟讀(緩存被載入的過程中可能會產生數據不一致,有效時間過程數據在內存中就會變成臟數據)
(4)緩存的可用性(如果太過依賴緩存,容易產生雪崩。使用緩存熱備並不能提高緩存的可用性,使用集群可以提高可用性)
(5)緩存預熱(LRU計算時間過長,有的數據需要提前載入)
(6)緩存穿透(解決部分數據無法命中,而加重資料庫壓力的問題,一般設置空值)分布式緩存架構
(1)JBoss Cache:數據相同
(2)Memcached:數據不同互不通信
(3)Memcached5大優點:協議簡單、通用性強(支持各種語言)、Libevent網路通信、內存管理高效、互不通信。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:233
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726