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

cache緩存伺服器

發布時間: 2023-01-08 22:57:26

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

一、瀏覽器緩存

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

Ⅱ 【NGINX入門】3.Nginx的緩存伺服器proxy_cache配置

本文介紹NGINX緩存機制,配置和參數說明。

如圖所示,nginx緩存,可以在一定程度上,減少源伺服器的處理請求壓力。因為靜態文件(比如css,js, 圖片)中,很多都是不經常更新的。nginx使用proxy_cache將用戶的請求緩存到本地一個目錄。下一個相同請求可以直接調取緩存文件,就不用去請求伺服器了。畢竟,IO密集型服務的處理是nginx的強項。

Nginx的緩存加速功能是由proxy_cache(用於反向代理和靜態緩存)和fastcgi_cache(PHP動態緩存)兩個功能模塊完成。

Nginx緩存特點:

先上個例子:

因為我是在一台伺服器上做試驗,所以用了兩個埠 80 和 90 進行模擬兩台伺服器之間的交互。

接下來講一下配置項:

這里我設置了 圖片 、 css 、 js 靜態資源進行緩存。
當用戶輸入 http://wangxiaokai.vip 域名時,解析得到 ip:port 的訪問地址。 port 默認為80。所以頁面請求會被當前server截取到,進行請求處理。
當解析到上述文件名結尾的靜態資源,會到緩存區獲取靜態資源。
如果獲取到對應資源,則直接返回數據。
如果獲取不到,則將請求轉發給 proxy_pass 指向的地址進行處理。

這里直接處理 90 埠接受到的請求,到伺服器本地目錄 /mnt/blog 下抓取資源進行響應。

細心的讀者應該發現,我在第二段例子里,留了個彩蛋 add_header wall "hey!guys!give me a star." 。
add_header 是用於在報頭設置自定義的信息。
所以,如果緩存有效的話,那麼靜態資源返回的報頭,一定會帶上這個信息。

(1)Nginx系列教程(3)nginx緩存伺服器上的靜態文件
https://yq.aliyun.com/articles/752967

(2)proxy_cache
nginx 反向代理之 proxy_cache https://www.cnblogs.com/yyxianren/p/10832172.html

(3)Nginx使用upstream負載均衡和proxy_cache緩存實現反向代理
https://blog.51cto.com/13770206/2163952

Ⅲ cache是什麼

cache的意思是:隱藏處,秘窖;貯藏物,隱藏物(尤指武器);高速緩沖存儲器。

短語

DNS cache poisoning域名伺服器緩存污染 ; DNS快取記憶體下毒

Web Cache網頁快照 ; 網頁緩存 ; 速緩存 ; web緩存

format cache格式化緩存分區 ; 格式緩存 ; 格局化緩存分區 ; 格式化緩存區

示例:

In your Web browser's cache are the most recent Web files that you have downloaded.

在你的網路瀏覽器的高速緩沖存儲器里是你最新下載的網路文檔。

近義詞:covert

英 [ˈkʌvət] 美 [ˈkʌvərt; ˈkoʊvɜːrt]

adj. 隱蔽的,秘密的;在丈夫保護下的

n. (動物可藏身的)矮樹叢;覆羽;隱藏處

短語

COVERT OPERATION隱蔽行動 ; 隱秘行動 ; 秘密行動

Covert Affairs鄰家女特工 ; 秘密行動

covert coverage秘密采訪 ; 隱性采訪

Ⅳ 什麼是Cache作用是什麼

Cache指的是緩存。

高速緩存(英語:cache,/kæʃ/kash[2][3][4])簡稱緩存,原始意義是指訪問速度比一般隨機存取存儲器(RAM)快的一種RAM,通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。

提供「緩存」的目的是為了讓數據訪問的速度適應CPU的處理速度,其基於的原理是內存中「程序執行與數據訪問的局域性行為」,即一定程序執行時間和空間內,被訪問的代碼集中於一部分。

為了充分發揮緩存的作用,不僅依靠「暫存剛剛訪問過的數據」,還要使用硬體實現的指令預測與數據預取技術——盡可能把將要使用的數據預先從內存中取到緩存里。

(4)cache緩存伺服器擴展閱讀

緩存的特點

緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。L1Cache(一級緩存)是CPU第一層高速緩存。

內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。

L2Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速率與主頻相同,而外部的二級緩存則只有主頻的一半。

L2高速緩存容量也會影響CPU的性能,原則是越大越好,普通台式機CPU的L2緩存一般為128KB到2MB或者更高,筆記本、伺服器和工作站上用CPU的L2高速緩存最高可達1MB-3MB。

緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速率就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。

隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。

Ⅳ 緩存策略的選擇

適合緩存的內容

1. 不變的圖像,如logo,圖標等

2. js、css靜態文件

3. 可下載的內容,媒體文件

適合協商緩存

1. HTML文件

2. 經常替換的圖片

3. 經常修改的js、css文件,js、css文件的載入可以加入文件的簽名來拒絕緩存,如『index.css?簽名』,『index.簽名.js』

不建議緩存的內容

1. 用戶隱私等敏感數據

2. 經常改變的API數據介面

NGINX配置緩存策略

本地緩存配置

1. add_header指令:添加狀態碼為2XX和3XX的響應頭信息,設置代碼add_header name value [always];,可以設置Pragma、Expires、Cache-Control,可以繼承

2. expires指令:通知瀏覽器過期時長,設置代碼expires time;

3. Etag指令:指定簽名,設置代碼etag on|off,默認on

前端代碼和資源壓縮

優勢

1. 讓資源文件更小,加快文件在網路中的傳輸,讓網頁更快的展現,降低帶寬和流量的開銷

壓縮方式

1. js、css、圖片、html代碼的壓縮

2. gzip壓縮

gzip配置

gzip on|off; #是否開啟gzipgzip_buffers 32 4K|16 8K; #緩沖(在內存中緩存幾塊?每塊多大)gzip_comp_level [1-9] #推薦6,壓縮級別(級別越高,壓得越小,越浪費CPU計算資源)

gzip_disable #正則匹配UA,什麼樣的Uri不進行gzip

gzip_min_length 200 #開始壓縮的最小長度

gzip_http_version 1.0|1.1 #開始壓縮的http協議版本

gzip_proxied #設置請求者代理伺服器,該如何緩存內容

gzip_types text/plain application/xml image/png #對哪些類型的文件壓縮,如txt、xml、css

gzip_vary on|off #是否傳輸gzip壓縮標志

CDN加速

定義

1. CDN的全稱content delivery network,內容分發網路

2. 盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定

3. 在網路各處放置節點伺服器所構成的有的互聯網基礎之上的一層智能虛擬網路

4. CDN系統能夠實現地根據網路流量和各節點的連接、負載狀況以及到用戶距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上

優勢

1. 本地cache加速,提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度

2. 跨運營商的網路加速,保證不同網路的用戶都能得到良好的訪問質量

3. 遠程訪問用戶根據DNS負載均衡技術只能選擇cache伺服器

4. 自動生成伺服器的遠程Mirror(鏡像)cache伺服器,遠程用戶訪問時從cache伺服器上讀取數據,減少遠程訪問的帶寬、分擔網路流量、減輕原站點web伺服器負載等功能

5. 廣泛分布的cdn節點加上節點之間的智能冗餘機制,可以有效地預防黑客入侵

工作原理

1. 用戶發起請求

2. 智能DNS的解析(根據IP判斷地理位置、接入網類型、選擇路由最短和負載最輕的伺服器)

3. 取得緩存伺服器ip

4. 把內容返回給用戶(如果緩存中有,沒有就執行5、6、7)

5. 向源站發起請求

6. 將結果返回給用戶

7. 將結果存入緩存伺服器

適用場景

1. 站點或者應用中大量靜態資源的加速分發,例如css、js、圖片和HTML

2. 大文件下載

3. 直播網站

獨立圖片伺服器

必要性

1. 分擔web伺服器的I/O負載,將耗費資源的圖片伺服器分離出來,提高伺服器的性能和穩定性

2. 能夠專門對圖片伺服器進行優化,為圖片伺服器設置針對性的緩存方案,減少帶寬成本,提高訪問速度

3. 提高網站的可擴展性,通過增加圖片伺服器,提高圖片吞吐能力

採用獨立域名

原因:

1. 同一域名下瀏覽器的並發連接數有限制,突破瀏覽器連接數的限制

2. 由於cookie的原因,對緩存不利,大部分web cache都只緩存不帶cookie的請求,導致每次的圖片請求都不能命中cache

如何圖片上傳和同步

1. NFS共享方式

2. 利用FTP同步

動態語言靜態化

將現有的PHP等動態語言的邏輯代碼生成為靜態的HTML文件,用戶訪問動態腳本重定向到靜態HTML文件的過程。對實時性要求不高

原因:

1. 動態腳本通過會做邏輯計算和數據查詢,訪問量越大,伺服器壓力越大

2. 訪問量大時可能會造成CPU負載過高,資料庫伺服器壓力過大

3. 靜態化可以減低邏輯處理壓力,降低資料庫伺服器查詢壓力

實現方法

1. 使用模板引擎

2. 利用ob系列函數

需要獲取swoole、workerman、TP、laravel、vue、Linux、redis以及性能優化,並發項目實戰,微服務 架構方面的資料,可以私信我哦

Ⅵ 高速緩存cache的主要作用

高速緩存cache的主要作用是為了解決CPU運算速度與內存讀寫速度不匹配的矛盾。

Cache工作的基本原理是利用程序訪問的局部性原理,包括空間局部性和時間局部性。

計算機在運行程序時首先將程序從磁碟讀取到主存,然後CPU按規則從主存中取出指令、數據並執行指令,但是直接從主存(一般用DRAM製成)中讀寫是很慢的,所以我們引入了cache。

在執行程序前,首先會試圖把要用到的指令、數據從主存移到cache中,然後在執行程序時直接訪問cache。如果指令、數據在cache中,那麼我們能很快地讀取出來,這稱為「命中(hit)」。

如果指令、數據不在cache中,我們仍舊要從主存中拿指令、數據,這稱為「不命中(miss)」。命中率對於cache而言是很重要的。

實際上cache是一個廣義的概念,可以認為主存是磁碟的cache,而CPU內cache又是主存的cache,使用cache的目的就是偽造出一個容量有低層次存儲器(如磁碟)那麼大,而速度又有寄存器(如通用寄存器)那麼快的存儲器,簡單來說就要讓存儲單元看起來又大又快。

Ⅶ 緩存Cache-Control

首先附上前面提到的一張圖:

根據上面的這張圖,來說http協議中的緩存,也就是cache-control將會格外清晰。

Cache-Control包括哪些特性呢?

第一,可緩存性:public  private  no-cache 。可緩存性指http的response進過的哪些地方可以進行緩存。public指在response返回經過的任何地方都可以緩存,包括代理伺服器,客戶端等,這樣下次請求將不會到達服務端而直接返回response;private則表示只有返回的瀏覽器才可以進行緩存;no-cache則表示不可直接用緩存,而是先要到伺服器端進行驗證。

第二,到期:max-age=<seconds> ,代表緩存的時間(秒); s-maxage=<seconds> ,專門為代理伺服器設置,如果與max-age同時返回,則瀏覽器會讀取max-age,而代理伺服器則會讀取s-maxage這個設置; max-stale=<seconds> ,代表在max-age過期後,如果存在max-stale,而且其時間沒有過期,則表示仍然可以用緩存,max-stale只在request發起端設置是有用的,又因為瀏覽器不會幫助我們帶上這個頭,所以客戶端是瀏覽器的時候這個max-stale是用不到的。

第三,重新驗證:must-revalidate和proxy-revalidate ,這兩個表示緩存過期時間到達以後,必須要到服務端重新請求和重新驗證,這兩個屬性在瀏覽器也不怎麼出現。

第四,其他,no-store ,表示本地和代理伺服器都不可以用緩存,必須去重新獲取; no-transform ,告訴代理伺服器不要對返回的body進行處理,比如壓縮等(代理伺服器比如nginx等可以不遵守,但是這個是規范,最好遵守)。

下面附上做的幾個簡單的例子來加深對上面的理解 。例子中通過查看對文件script.js的緩存情況說明問題。

執行node server.js,觀察瀏覽器network如下圖(這里注意,瀏覽器的Disable cache沒有勾選,否則會默認忽略Cache-Control的設置):

立刻重新刷新瀏覽器,則network中出現下圖:

此時我們可以看見這事size一欄是from memory cache,因為我們設置max-age為20s,在這個期間即使我改變script.js的內容,瀏覽器仍然會用memory裡面的內容,而得不到更新。很顯然實際開發中,如果出現這樣的問題,是很可怕的。同時如果每次去後端請求response,又會使網頁很慢, 實際中max-age往往要設置很大 ,表示在本地保存很久的時間,那麼下次請求的Time為0。那麼實際開發中,如何去解決這兩者的矛盾呢?就是通過改變url的方法, 在請求的文件名後面加上根據內容生成的哈希值 (刷新瀏覽器緩存的方案),這樣實際請求的 url將會改變,那麼自然就會去重新請求,如果後端的文件沒有更新,也就是url沒有變,則自然會在緩存中讀取,則不需要經過網路傳輸,則速度是很快的,用戶體驗是很好的。 network一欄中,這里Size的兩個值,上面表示傳輸時候的大小,下面表示實際的大小(上面的可進行壓縮Gzip傳輸,但是不曉得header可不可以壓縮,貌似http2中支持頭壓縮),傳輸時的大小比實際的大,因為加上了頭信息。Time的兩個值,上面一行表示從請求開始到接受完最後一個byte為止的時間。下面一行是Latency,代表從請求接受完到讀取該資源第一個byte之間的等待時間。

上圖是查找緩存的過程。

如果Cache-Control中max-age的值設置很大,那麼一直用本地的緩存肯定是不可取的。所以除了給文件名後面加上哈希碼之外的方法,我們可以通過每次去後端詢問是否文件有所改動?那麼如何來實現這個過程呢?首先在Cache-Control中設置no-cache,同時遵從實際情況我們把max-age設置很大。更改servr.js如下:

打開network,多次刷新仍然如下:

說明此時已經不在緩存中讀取了,即使我們的max-age設置很大,這是因為我們設置了no-cache。所以每次我們都不會直接使用緩存了。那麼如何發揮no-cache的作用呢,還需要配合資源驗證,資源驗證在http中主要有兩個頭:Last-Modified和Etag。這個內容介紹在-資源驗證Last-Modified和Etag中介紹。

Ⅷ cache的功能是什麼

解釋:

n. 隱藏處,秘窖;貯藏物,隱藏物(尤指武器);高速緩沖存儲器

v. 匿藏,隱藏(尤指武器);把(數據)存入高速緩沖存儲器;給(硬體)裝備高速緩存

用法:

DNS cache poisoning域名伺服器緩存污染 ; DNS快取記憶體下毒

Web Cache網頁快照 ; 網頁緩存 ; 速緩存 ; web緩存

format cache格式化緩存分區 ; 格式緩存 ; 格局化緩存分區 ; 格式化緩存區

cache

讀法:

英[kæʃ]美[kæʃ]


近義詞:

hide

讀法:

英[haɪd]美[haɪd]

解釋:

v. 把……藏起來,隱藏;躲藏,躲避;遮住,遮擋;掩蓋,隱瞞

n. (可觀察鳥獸行動的)隱匿處,埋伏處;獸皮;<非正式>(困境中的)生命,人身安全

用法:

hide and seek捉迷藏 ; 躲貓貓 ; 藏貓貓

Nowhere to Hide無處躲藏 ; 強捕 ; 無處可逃

Hide-and-Seek躲貓貓 ; 藏貓貓 ; 游戲名稱

Ⅸ 聊一聊緩存 [from memory cache 和 from disk cache]

現在簡單的來分析一下,首先,大家可以想一下,瀏覽器的緩存存放在哪裡,如何在瀏覽器中判斷強制緩存是否生效?
先看一下這張圖

會發現在瀏覽器開發者工具的Network的Size欄會出現的三種情況:

狀態碼及區別:
from memory cache(內存中的緩存): 不訪問伺服器,一般已經載入過該資源且緩存在了內存當中,直接從內存中讀取緩存。瀏覽器關閉後,數據將不存在(資源被釋放掉了),再次打開相同的頁面時,不會出現from memory cache。

from disk cache(是硬碟中的緩存): 不訪問伺服器,已經在之前的某個時間載入過該資源,直接從硬碟中讀取緩存,關閉瀏覽器後,數據依然存在,此資源不會隨著該頁面的關閉而釋放掉下次打開仍然會是from disk cache。

304 Not Modified: 訪問伺服器,發現數據沒有更新,伺服器返回此狀態碼。然後從緩存中讀取數據。

在瀏覽器中,瀏覽器會在js和圖片等文件解析執行後直接存入內存緩存中,那麼當刷新頁面時只需直接從內存緩存中讀取(from memory cache);而css文件則會存入硬碟文件中,所以每次渲染頁面都需要從硬碟讀取緩存(from disk cache)。

內存緩存(from memory cache)和硬碟緩存(from disk cache)特點
(1)內存緩存(from memory cache):內存緩存具有兩個特點,分別是快速讀取和時效性:
1、快速讀取:內存緩存會將編譯解析後的文件,直接存入該進程的內存中,占據該進程一定的內存資源,以方便下次運行使用時的快速讀取。
2、時效性:一旦該進程關閉,則該進程的內存則會清空。
(2)硬碟緩存(from disk cache):硬碟緩存則是直接將緩存寫入硬碟文件中,讀取緩存需要對該緩存存放的硬碟文件進行I/O操作,然後重新解析該緩存內容,讀取復雜,速度比內存緩存慢。

緩存原理
1、先查找內存,如果內存中存在,從內存中載入;
2、如果內存中未查找到,選擇硬碟獲取,如果硬碟中有,從硬碟中載入;
3、如果硬碟中未查找到,那就進行網路請求;
4、載入到的資源緩存到硬碟和內存;

執行順序
現載入一種資源(例如:圖片):
訪問-> 200 -> 退出瀏覽器
重新進來-> 200(from disk cache) -> 刷新 -> 200(from memory cache)
附一張流程圖梳理一下

Ⅹ 瀏覽器緩存及刷新

1、伺服器開啟Cache-Control緩存控制(優先順序更高)
(相對時間,在這個時間之前不會和伺服器通信,本地拿過來直接用)
Cache-Control:max-age=3600,這里是3600秒過期,過期前不會和伺服器通信,直接用本地緩存
Cache-Control:no-cache,不使用本地緩存
2、伺服器開啟Expires(過期時間,絕對時間)
Expires:Thu,21 Jan 2017 23:39:02 GMT

1、Last-Modified(伺服器返回此文件最後修改時間)
If-Modified-Since(客戶端第二次請求該資源帶著上次伺服器返回的此文件最後修改時間,比對是否相同)
2、Etag(優先順序更高)(第一次請求資源伺服器返回一個Etag值)
If-None-Match(第二次請求資源客戶端帶著之前的Etag值給伺服器進行比對)

如果多個參數同事存在時:
強緩存優先順序更高,而在強緩存中,Cache-Control比Expires優先順序高
協商緩存中,Etag比Last-Modified優先順序高

1、正常操作:地址欄輸入url,跳轉鏈接,前進後退等
2、手動刷新:F5,點擊刷新按鈕,右鍵菜單刷新
3、強制刷新:ctrl+F5

1、正常操作:強制緩存有效,協商緩存有效
2、手動刷新:強制緩存失效,協商緩存有效
3、強制刷新:強制緩存失效,協商緩存失效

熱點內容
電腦死機腳本 發布:2025-08-29 22:38:37 瀏覽:759
伺服器上的ip怎麼跑爬蟲 發布:2025-08-29 22:34:41 瀏覽:677
安卓去哪裡免費下2k21 發布:2025-08-29 22:13:53 瀏覽:803
python編程能做什麼 發布:2025-08-29 22:11:17 瀏覽:355
資料庫網頁設計 發布:2025-08-29 21:53:03 瀏覽:366
手機密碼忘了怎麼解開 發布:2025-08-29 21:52:24 瀏覽:412
微信雲控腳本 發布:2025-08-29 21:48:01 瀏覽:447
新興源碼 發布:2025-08-29 21:42:17 瀏覽:772
win2012安裝sql2012 發布:2025-08-29 21:29:51 瀏覽:194
按鍵精靈新建腳本 發布:2025-08-29 21:28:04 瀏覽:678