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

緩存控制

發布時間: 2022-02-21 19:22:24

『壹』 Http協議中,用於控制緩存的Header有哪些並簡要說明

  • Last-Modified(伺服器響應) 和 If-Modified-Since(瀏覽器請求)

  • ETag(伺服器) 和 If-None-Match(瀏覽器)

  • Expires(伺服器響應傳遞,格林威治格式的一個具體的時間點)

  • Cache-Control(伺服器建議的緩存策略)

    max-age:時間長度。(瀏覽器和共享高速緩存緩存有效的時長)

    s-maxage: 時間長度。共享高速緩存的緩存有效時長(瀏覽器不進行緩存)

    no-cache:瀏覽器不從緩存讀取,必須請求伺服器。

    no-store:不緩存任何請求和響應信息。

    public:對任何緩存媒介都可緩存該響應。

    private:只允許個體客戶端緩存,不允許共享高速緩存。

可以看這篇文章:網頁鏈接

『貳』 servlet怎麼控制頁面緩存

Html頁面中的HTTP頭信息中有著控制頁面緩存的設置,包括瀏覽器端,中間緩存伺服器端,web伺服器端;

本文討論頭信息中帶緩存控制信息的HTML頁面(JSP/Servlet生成好出來的也是HTML頁面)在中間緩存伺服器中的緩存情況。
HTTP協議中關於緩存的信息頭關鍵字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。
HTTP1.0中通過Pragma 控制頁面緩存,可以設置:Pragma或no-cache。網上有非常多的文章說明如何控制不讓瀏覽器或中間緩存伺服器緩存頁面,通常設置的值為no- cache,不過這個值不這么保險,通常還加上Expires置為0來達到目的。但是如我們刻意需要瀏覽器或緩存伺服器緩存住我們的頁面這個值則要設置為 Pragma。
HTTP1.1中啟用Cache-Control 來控制頁面的緩存與否,這里介紹幾個常用的參數:
no-cache,瀏覽器和緩存伺服器都不應該緩存頁面信息;
public,瀏覽器和緩存伺服器都可以緩存頁面信息;
no-store,請求和響應的信息都不應該被存儲在對方的磁碟系統中;
must-revalidate,對於客戶機的每次請求,代理伺服器必須想伺服器驗證緩存是否過時;
max-age=xxx,s-max-age=xxx,替代Expires,表示應該在xxx秒後認為頁面過時,後者指示代理伺服器中緩存(通常稱為共享緩存)的頁面過期時間。(不過我試了好多次,這個選項一直沒法實現,希望有人能補充!)
通常我們不需要緩存頁面時設置該值為"no-cache,no-store,must-revalidate"(分三行代碼設置);需要緩存頁面信息時則設置該值為"public,max-age,s-max-age"。
Last-Modified只頁面的最後生成時間,GMT格式;
Expires過時期限值,GMT格式,指瀏覽器或緩存伺服器在該時間點後必須從真正的伺服器中獲取新的頁面信息;
上面兩個值在JSP中設置值為字元型的GMT格式,無法生效,設置long類型才生效;
最後來看一下JSP或Servlet中如何設置緩存控制信息的代碼:
java代碼
//本頁面允許在瀏覽器端或緩存伺服器中緩存,時限為10秒。
java.util.Date date = new java.util.Date();
response.setDateHeader("Last-Modified",date.getTime());
response.setDateHeader("Expires",date.getTime()+10000);

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "Pragma");
Java代碼
//不允許瀏覽器端或緩存伺服器緩存當前頁面信息。
response.setHeader( "Pragma", "no-cache" );
response.setDateHeader("Expires", 0);

response.addHeader( "Cache-Control", "no-cache" );
response.addHeader( "Cache-Control", "no-store" );
response.addHeader( "Cache-Control", "must-revalidate" );
如果HTML頁面信息中包括了Expires頭信息,則其相關的緩存機制不再處理該頁面,而是安裝頁面的緩存控制要求來處理。所以做了上述工作後,Squid無需做任何配置上的修改(指Squid的refresh_pattern指令不處理這些頁面 )。

『叄』 內存控制器和CPU的緩存在作用上有什麼本質的區別嗎不什麼要「既生瑜何生亮呢「」

在CPU前端匯流排和外頻相同的時代,CPU把數據存放在內存的速度是足夠的 但到了現在內存的速度不能滿足CPU的需求了,所以設計了高速緩存,而內存控制器的出現使得在AMD平台式單通道和雙通道的性能幾乎相同

『肆』 如何讓php對頁面的緩存進行控制 php處理請求的瀏覽器緩存處理

只要伺服器端設計嚴謹,你再怎麼在客戶端搞也沒意義。
頁面過期是設置的http header,要想修改header那你得想法截獲 http 數據通信的包,修改完了再恢復http對話,難度可不小。
而且設計者一般都在提交之後肯定就設定某個標記指明這次測試結束了,你即便能再次提交,肯定也會出現錯誤的,當然,不排除設計者是巨笨的那種情況。

『伍』 http 協議中可以控制緩存的有哪些

客戶端請求headers包含了請求行和一些頭域。 各種頭域:這些頭域都是有關鍵字和鍵值成對組合,最後換行回車(\r\n)結束,這些頭域告訴伺服器應該怎麼去響應以及本身一些信息。 伺服器響應 狀態行:協議版本 響應狀態 狀態描述 ------這三者用空格

『陸』 QQ音樂緩存如何控制

扣扣音樂的緩存是不能存電腦的,它的緩存只能用扣扣聽。可以更改緩存地址,在扣扣設置里。你進去仔細看。緩存需要自己動手清理,否則佔用內存。有360之類的清理緩存之類也能清理。

『柒』 HTTP協議中可以控制緩存的有哪些

通過響應來控制緩存,在響應頭中主要有cache-control、pragma、expires三個響應頭,其中expires是HTTP1.0中的響應頭,後面直接跟一個緩存失效日期,但是伺服器和客戶端之間的時鍾往往不同,因此通過該響應頭來控制緩存失效時間不準確,一般不用,如果要設置客戶端不緩存,則設置響應頭「expires: -1」即可;pragema是HTTP1.1協議為了兼容HTTP1.0+協議,用來控制不緩存,「pragma: no-cache";cache-control是HTTP1.1中的響應頭,其參數為相對的秒值,即過多少秒緩存失效,因此建議使用該響應頭來控制緩存失效時間,其後可以跟的內容有no-cache、no-store、max-age、must-revalidate
為了兼容各個協議版本,要想客戶端不緩存資源,一般都添加三個響應頭:cache-control: no-cache、pragma: no-cache、expires: -1
注意:cache-control: no-cache控制緩存,客戶端是會緩存資源的,只是在於原始伺服器進行再驗證之前不會想客戶端提供資源,也就是資源新鮮度永遠過期,這樣比直接訪問伺服器節省了資源在網路中的傳輸成本,相比開啟緩存增加了再驗證的成本,性能失效介於兩者之間;要想客戶端緩存不從響應中拷貝資源副本,則應該使用cache-control: no-store,使用該響應頭內容也可以讓緩存立即刪除已經拷貝的副本;而must-revalidate是伺服器希望緩存能嚴格遵守過期信息,一般情況下類似no-cache,但在緩存與原始伺服器進行新鮮度驗證的時候,原始伺服器不可用,這將會導致這一段時間中訪問該資源會504 gateway timeout,因此建議使用no-cache

『捌』 如何控制Linux清理cache機制

Linux下的緩存機制及清理buffer/cache/swap的方法梳理

(1)緩存機制
為了提高文件系統性能,內核利用一部分物理內存分配出緩沖區,用於緩存系統操作和數據文件,當內核收到讀寫的請求時,內核先去緩存區找是否有請求的數據,有就直接返回,如果沒有則通過驅動程序直接操作磁碟。
緩存機制優點:減少系統調用次數,降低CPU上下文切換和磁碟訪問頻率。
CPU上下文切換:CPU給每個進程一定的服務時間,當時間片用完後,內核從正在運行的進程中收回處理器,同時把進程當前運行狀態保存下來,然後載入下一個任務,這個過程叫做上下文切換。實質上就是被終止運行進程與待運行進程的進程切換。
(2)查看緩存區及內存使用情況
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7866 7725 141 19 74 6897
-/+ buffers/cache: 752 7113
Swap: 16382 32 16350
可以看到內存總共8G,已使用7725M,剩餘141M,不少的人都是這么看的,這樣並不能作為實際的使用率。因為有了緩存機制,具體該怎麼算呢?
空閑內存=free(141)+buffers(74)+cached(6897)
已用內存=total(7866)-空閑內存
由此算出空閑內存是7112M,已用內存754M,這才是真正的使用率,也可參考-/+ buffers/cache這行信息也是內存正確使用率。
(3)可見緩存區分為buffers和cached,他們有什麼區別呢?
內核在保證系統能正常使用物理內存和數據量讀寫情況下來分配緩沖區大小。buffers用來緩存metadata及pages,可以理解為系統緩存,例如,vi打開一個文件。cached是用來給文件做緩存,可以理解為數據塊緩存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測試寫入一個文件,就會被緩存到緩沖區中,當下一次再執行這個測試命令時,寫入速度會明顯很快。
(4)隨便說下Swap做什麼用的呢?
Swap意思是交換分區,通常我們說的虛擬內存,是從硬碟中劃分出的一個分區。當物理內存不夠用的時候,內核就會釋放緩存區(buffers/cache)里一些長時間不用的程序,然後將這些程序臨時放到Swap中,也就是說如果物理內存和緩存區內存不夠用的時候,才會用到Swap。
swap清理:
swapoff -a && swapon -a
注意:這樣清理有個前提條件,空閑的內存必須比已經使用的swap空間大
(5)怎樣釋放緩存區內存呢?
a)直接改變內核運行參數
#釋放pagecache
echo 1 >/proc/sys/vm/drop_caches
#釋放dentries和inodes
echo 2 >/proc/sys/vm/drop_caches
#釋放pagecache、dentries和inodes
echo 3 >/proc/sys/vm/drop_caches
b)也可以使用sysctl重置內核運行參數
sysctl -w vm.drop_caches=3
注意:這兩個方式都是臨時生效,永久生效需添加sysctl.conf文件中,一般寫成腳本手動清理,建議不要清理。
修改/etc/sysctl.conf 添加如下選項後就不會內存持續增加
vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=32 32 8
kern.maxvnodes=3
上面的設置比較粗暴,使cache的作用基本無法發揮。需要根據機器的狀況進行適當的調節尋找最佳的折衷。

『玖』 緩存的作用是什麼

緩存的作用:

1、預讀取

當硬碟受到CPU指令控制開始讀取數據時,硬碟上的控制晶元會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由於硬碟上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候。

硬碟則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由於緩存的速率遠遠高於磁頭讀寫的速率,所以能夠達到明顯改善性能的目的。

2、寫入

當硬碟接到寫入數據的指令之後,並不會馬上將數據寫入到碟片上,而是先暫時存儲在緩存里,然後發送一個「數據已寫入」的信號給系統,這時系統就會認為數據已經寫入,並繼續執行下面的工作,而硬碟則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到碟片上。

3、臨時存儲

有時候,某些數據是會經常需要訪問的,像硬碟內部的緩存(暫存器的一種)會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。

(9)緩存控制擴展閱讀:

緩存分類:

1、靜態緩存:是在新內容發布的同時就立刻生成相應內容的靜態頁面,比如:2003年3月22日,管理員通過後台內容管理界面錄入一篇文章後,並同步更新相關索引頁上的鏈接。

2、動態緩存:是在新內容發布以後,並不預先生成相應的靜態頁面,直到對相應內容發出請求時,如果前台緩存伺服器找不到相應緩存,就向後台內容管理伺服器發出請求,後台系統會生成相應內容的靜態頁面,用戶第一次訪問頁面時可能會慢一點,但是以後就是直接訪問緩存了。

熱點內容
java源碼pdf 發布:2024-10-26 20:22:45 瀏覽:803
中文安卓編程 發布:2024-10-26 20:18:27 瀏覽:820
sql傳遞參數 發布:2024-10-26 20:06:57 瀏覽:247
安卓手機去哪裡找游戲 發布:2024-10-26 20:03:24 瀏覽:912
安卓手機圖標誤刪如何恢復 發布:2024-10-26 19:38:34 瀏覽:916
彈跳的編程 發布:2024-10-26 19:37:28 瀏覽:453
主機銷售網站源碼 發布:2024-10-26 19:36:36 瀏覽:103
linux內核視頻 發布:2024-10-26 19:30:16 瀏覽:293
微信猜拳演算法 發布:2024-10-26 19:23:35 瀏覽:390
android編譯第三方庫 發布:2024-10-26 19:14:20 瀏覽:615