當前位置:首頁 » 硬碟大全 » 本地緩存是否需要校驗
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

本地緩存是否需要校驗

發布時間: 2022-12-19 02:59:36

⑴ iOS web緩存策略以及手動清除緩存

當我們使用webview載入html資源時,本質上就是向伺服器索取資源的http請求過程,如果我們不注意資源的緩存策略的話,就可能會造成這樣那樣的問題,比如:實時性要求較高的功能卻老是走緩存不更新,有些基本不會變動的頁面卻又每次都重新去伺服器拉請求。

iOS自帶的緩存策略,提供了一個內存和磁碟混合的緩存,一共有7種緩存策略,使用較多的是其中的四種( 下方編號1,2,5,6 )

上面介紹了iOS自帶的緩存控制 NSURLRequestCachePolicy ,也說到當 NSURLRequestCachePolicy 設為默認的 時,主要是根據http的緩存策略來決定是否使用緩存。

那麼就簡單的介紹一下,http的緩存控制和緩存校驗。

在http中,控制緩存開關的欄位有兩個,Pragma和Cache-Control

Pragma有兩個欄位no-cache和expires,當pragma為no-cache時表示禁用緩存,expires的值是一個GMT時間,表示該緩存的有效時間。但是已經被逐步拋棄了,有些網站為了向下兼容還保留了這兩個欄位。

Cache-Control除了在響應中使用,在請求中也可以使用。

在請求中使用,Cache-Control可選的值有:

在響應中使用,Cache-Control可選的值有:

在緩存中,我們需要一個機制來驗證緩存是否有效。比如伺服器的資源更新了,客戶端需要及時刷新緩存;又或者客戶端的資源過了有效期,但伺服器上的資源還是舊的,此時不需要重新發送。緩存校驗就是用來解決這些問題的,在http1.1中,主要關注下 Last-Modified 和 etag 這兩個欄位。

服務端在返回資源時,會將該資源的最後更改時間通過 Last-Modified 欄位返回給客戶端。客戶端下次請求時通過 If-Modified-Since 或者 If-UnModified-Since 帶上 Last-Modified ,服務端檢查該時間是否與伺服器的最後修改時間一致:如果一致,則返回304狀態碼,不反悔資源;如果不一致,則返回200和修改後的資源,並帶上新的時間。

單純的以修改時間來判斷還是有缺陷,比如文件的最後修改時間變了,但內容沒變。對於這樣的情況,我們可以使用etag來處理。
etag的方式是這樣:伺服器通過某個演算法對資源進行計算,取得一串值(類似於文件的md5值),之後將該值通過etag返回給客戶端,客戶端下次請求時通過If-None-Match或If-Match帶上該值,伺服器對該值進行對比校驗:如果一致則不要返回資源。

當我們的webview緩存到一定的峰值的時候,需要手動的清除一下wenview的緩存,方法如下:

找出web緩存的路徑,清空該路徑

webKit除了清除緩存的API

覺得有用,請幫忙點亮紅心

Better Late Than Never!
努力是為了當機會來臨時不會錯失機會。
共勉!

⑵ 認識HTTP----緩存篇

本文內容大多參考 《圖解HTTP》一書

所以講緩存為什麼要先扯代理伺服器?別急,讓我們看一下一個請求的簡單示意圖。

我們看到客戶端(用戶)發送了一個請求並不是直接發給源伺服器的而是經過了代理伺服器,然後經由代理伺服器再發送給源伺服器,響應也同樣遵循這個順序。
那麼代理伺服器在這中間擔任了什麼角色?

緩存是指代理伺服器或客戶端本地磁碟內保存的資源副本。利用緩存可減少對源伺服器的訪問,因此也就節省了通信流量和通信時間。
緩存伺服器是代理伺服器的一種,並歸類在緩存代理類型中。換句話說,當代理轉發從伺服器返回的響應時,代理伺服器將會保存一份資源的副本。

緩存伺服器的優勢在於利用緩存可避免多次從源伺服器轉發資源。因此客戶端可就近從緩存伺服器上獲取資源,而源伺服器也不必多次處理相同的請求了。

即便緩存伺服器和客戶端內有緩存,也不能每次都給我返回緩存吧,如果是這樣,源伺服器更新了我也不知道,因為我每次都是看緩存的資源。
為了解決這個問題,針對緩存設計了時效性的概念:
即使存在緩存,也會因為客戶端的要求、緩存的有效期等因素,向源伺服器確認資源的有效性。若判斷緩存失效,緩存伺服器將會再次從源伺服器上獲取「新」資源。

緩存不僅可以存在於緩存伺服器內,還可以存在客戶端瀏覽器中。以Internet Explorer 程序為例,把客戶端緩存稱為臨時網路文件(Temporary Internet File)。
瀏覽器緩存如果有效,就不必再向伺服器請求相同的資源了,可以直接從本地磁碟內讀取。
另外,和緩存伺服器相同的一點是,當判定緩存過期後,會向源伺服器確認資源的有效性。若判斷瀏覽器緩存失效,瀏覽器會再次請求新資源。

Pragma 是HTTP/1.1 之前版本的歷史遺留欄位,僅作為與HTTP/1.0的向後兼容而定義。
規范定義的形式唯一,如下所示。
Pragma: no-cache
該首部欄位屬於通用首部欄位,但只用在客戶端發送的請求中。客戶端會要求所有的中間伺服器不返回緩存的資源。

通過指定首部欄位Cache-Control 的指令,就能操作緩存的工作機制。

可用的指令按請求和響應分類如下所示:

public指令
Cache-Control: public
當指定使用public 指令時,則明確表明其他用戶也可利用緩存。
private指令

no-store指令
Cache-Control: no-store
當使用no-store 指令時,暗示請求(和對應的響應)或響應中包含機密信息。
因此,該指令規定緩存不能在本地存儲請求或響應的任一部分。

ps:從字面意思上很容易把no-cache誤解成為不緩存,但事實上no-cache代表不緩存過期的資源,緩存會向源伺服器進行有效期確認後處理資源,也許稱為do-not-serve-from-cache-without-revalidation更合適。no-store 才是真正地不進行緩存,請讀者注意區別理解。

s-maxage指令
Cache-Control: s-maxage=604800 //(單位:秒)
s-maxage 指令的功能和max-age 指令的功能相同, 它們的不同點是s-maxage 指令只適用於供多位用戶使用的公共緩存伺服器(這里指代理伺服器)。也就是說,對於向同一用戶重復返回響應的伺服器來說,這個指令沒有任何作用。
另外,當使用s-maxage 指令後,則直接忽略對Expires 首部欄位及max-age 指令的處理。
max-age指令

cache-extension token
Cache-Control: private, community="UCI"
通過 cache-extension 標記(token),可以擴展Cache-Control 首部欄位內的指令。
如上例,Cache-Control 首部欄位本身沒有community 這個指令。藉助extension tokens 實現了該指令的添加。如果緩存伺服器不能理community 這個新指令,就會直接忽略。因此,extension tokens 僅對能理解它的緩存伺服器來說是有意義的。

If-Unmodified-Since: Thu, 03 Jul 2012 00:00:00 GMT
首部欄位If-Unmodified-Since 和首部欄位If-Modified-Since 的作用相反。它的作用的是告知伺服器,指定的請求資源只有在欄位值內指定的日期時間之後,未發生更新的情況下,才能處理請求。如果在指定日期時間後發生了更新,則以狀態碼412 Precondition Failed 作為響應返回。

ps:Last-Modified 存在一定問題,如果在伺服器上,一個資源被修改了,但其實際內容根本沒發生改變,會因為Last-Modified時間匹配不上而返回了整個實體給客戶端(即使客戶端緩存里有個一模一樣的資源)。

首部欄位If-None-Match 屬於附帶條件之一。它和首部欄位If-Match 作用相反。用於指定If-None-Match 欄位值的實體標記(ETag)值與請求資源的ETag 不一致時,它就告知伺服器處理該請求。
在GET 或HEAD 方法中使用首部欄位If-None-Match 可獲取最新的資源。因此,這與使用首部欄位If-Modified-Since 時有些類似。

不與伺服器確認,而是直接使用瀏覽器緩存的內容。其中響應內容和之前的響應內容一模一樣,例如其中的Date時間是上一次響應的時間。

F5的作用和直接在URI輸入欄中輸入然後回車是不一樣的,F5會讓瀏覽器無論如何都發一個HTTP Request給Server,即使先前的響應中有Expires頭部。

Ctrl+F5要的是徹底的從Server拿一份新的資源過來,所以不光要發送HTTP request給Server,而且這個請求裡面連If-Modified-Since/If-None-Match都沒有,這樣就逼著Server不能返回304,而是把整個資源原原本本地返回一份,這樣,Ctrl+F5引發的傳輸時間變長了,自然網頁Refresh的也慢一些。

Cache-Control 是 HTTP1.1 才有的,不適用於 HTTP1.0,而 Expires 既適用於 HTTP1.0,也適用於 HTTP1.1,所以說在大多數情況下同時發送這兩個頭會是一個更好的選擇,當客戶端兩種頭都能解析的時候,會優先使用 Cache-Control。

二者都是通過某個標識值來請求資源, 如果伺服器端的資源沒有變化,則自動返回 HTTP 304 (Not Changed)狀態碼,內容為空,這樣就節省了傳輸數據量。當資源變化後則返回新資源。從而保證不向客戶端重復發出資源,也保證當伺服器有變化時,客戶端能夠得到最新的資源。
其中Last-Modified使用文件最後修改作為文件標識值,它無法處理文件一秒內多次修改的情況,而且只要文件修改了哪怕文件實質內容沒有修改,也會重新返回資源內容;ETag作為「被請求變數的實體值」,其完全可以解決Last-Modified頭部的問題,但是其計算過程需要耗費伺服器資源。

Expires和Cache-Control都有一個問題就是服務端的修改,如果還在緩存時效里,那麼客戶端是不會去請求服務端資源的(非刷新),這就存在一個資源版本不符的問題,而強制刷新一定會發起HTTP請求並返回資源內容,無論該內容在這段時間內是否修改過;而Last-Modified和Etag每次請求資源都會發起請求,哪怕是很久都不會有修改的資源,都至少有一次請求響應的消耗。
對於所有可緩存資源,指定一個Expires或Cache-Control max-age以及一個Last-Modified或ETag至關重要。同時使用前者和後者可以很好的相互適應。
前者不需要每次都發起一次請求來校驗資源時效性,後者保證當資源未出現修改的時候不需要重新發送該資源。而在用戶的不同刷新頁面行為中,二者的結合也能很好的利用HTTP緩存控制特性,無論是在地址欄輸入URI然後輸入回車進行訪問,還是點擊刷新按鈕,瀏覽器都能充分利用緩存內容,避免進行不必要的請求與數據傳輸。

做法很簡單,就是把可能會更新的資源以版本形式發布,常用的方法是在文件名或參數帶上一串md5或時間標記符:

可以看到上面的例子中有不同的做法,有的在URI後面加上了md5參數,有的將md5值作為文件名的一部分,有的將資源放在特性版本的目錄中。
那麼在文件沒有變動的時候,瀏覽器不用發起請求直接可以使用緩存文件;而在文件有變化的時候,由於文件版本號的變更,導致文件名變化,請求的url變了,自然文件就更新了。這樣能確保客戶端能及時從伺服器收取到新修改的文件。通過這樣的處理,增長了靜態資源,特別是圖片資源的緩存時間,避免該資源很快過期,客戶端頻繁向服務端發起資源請求,伺服器再返回304響應的情況(有Last-Modified/Etag)。

⑶ 【微信小程序】本地緩存

本地緩存官方講解:
https://developers.weixin.qq.com/miniprogram/dev/api/data.html#wxsetstorageobject

演示視屏可以關注公微信訂閱號查看(Rabbit_svip)。

樣式隨便寫,主要留意功能。
頁面結構

【app.json】

【login.wxml】

【login.js】

【index.wxml】

【index.js】

先看看【app.json】,在pages裡面,要把login放在第一,這樣在小程序打開的時候,就會先打開login.wxml這個頁面。

【login.wxml】頁面,第二行的<form>標簽里,要加bindsubmit。

這是微信官方文檔上寫明的事件。在<form>表單提交時,會攜帶<form>中的數據出發submit事件。

在使用bindsubmit時,記得在input元素上面寫明「name」屬性。

可以試試,查看一下控制台輸出的值。

【login.js】
在點擊登錄提交表單後,如果登錄成功,用wx.setStorage(),把用戶名臨時存儲起來。

存儲完成後,跳轉頁面。用到 wx.redirectTo
用 wx.redirectTo 進行跳轉,是沒有返回上一層的路徑的。

在login.js這個頁面中,用到 onLoad 這個函數(第107行)。作用是監聽頁面載入。

onLoad裡面,用到 wx.getStorage 這個API。作用是檢測本地緩存,看看是否有對應的key指定的值。如果有,則調用 success 這個回調函數。

【index.js】
這個頁面設置了一個清除本地緩存的button。
用到 wx.removeStorage 這個API。

這里只要指定key值就行。這樣就可以刪除掉對應的緩存。
刪除成功後,執行 success 回調函數。

⑷ 瀏覽器緩存原理簡述

緩存文件存儲方式有2種:內存和硬碟。為了提高文件讀取速度,瀏覽器優先讀內存中的緩存文件(如果存在的話)。

按照本地緩存階段和協商緩存階段分類:

緩存的策略由http消息頭Cache-Control確定,以下為各個值對應的效果:
Cache-Control:public :所有內容都將被緩存(客戶端和代理伺服器都可緩存)
Cache-Control:private :所有內容只有客戶端可以緩存
Cache-Control:no-cache :默認值。客戶端緩存內容,但是是否使用緩存則需要經過協商緩存來驗證決定
Cache-Control:no-store :所有內容都不會被緩存,即不使用強制緩存,也不使用協商緩存
Cache-Control:max-age=xxx (xxx is numeric) :緩存內容將在xxx秒後失效

HTTP1.0 的特性,標識該資源過期的時間點,它是一個絕對值,格林威治時間(Greenwich Mean Time, GMT),即在這個時間點之後,緩存的資源過期; 優先順序:Cache-Control 優先順序高於 Expires ,為了兼容,通常兩個頭部同時設置;瀏覽器默認行為:其實就算 Response Header 中沒有設置 Cache-Control 和 Expires,瀏覽器仍然會緩存某些資源,這是瀏覽器的默認行為,是為了提升性能進行的優化,每個瀏覽器的行為可能不一致,有些瀏覽器甚至沒有這樣的優化。

Last-Modified (Response Header)與 If-Modified-Since (Request Header)是一對報文頭,屬於 http 1.0。

If-Modified-Since 是一個請求首部欄位,並且只能用在 GET 或者 HEAD 請求中。Last-Modified 是一個響應首部欄位,包含伺服器認定的資源作出修改的日期及時間。當帶著 If-Modified-Since 頭訪問伺服器請求資源時,伺服器會檢查 Last-Modified,如果 Last-Modified 的時間早於或等於 If-Modified-Since 則會返回一個不帶主體的 304 響應,否則將重新返回資源。

ETag 與 If-None-Match 是一對報文頭,屬於 http 1.1。

ETag 是一個響應首部欄位,它是根據實體內容生成的一段 hash 字元串,標識資源的狀態,由服務端產生。If-None-Match 是一個條件式的請求首部。如果請求資源時在請求首部加上這個欄位,值為之前伺服器端返回的資源上的 ETag,則當且僅當伺服器上沒有任何資源的 ETag 屬性值與這個首部中列出的時候,伺服器才會返回帶有所請求資源實體的 200 響應,否則伺服器會返回不帶實體的 304 響應。

⑸ 如何知道自己的電腦的L2緩存是否支持ECC校驗

這是我引用別人的大致是這個意思:
BIOS的優化方法:

1、標准CMOS設置
從主菜單選擇「STANDARD CMOS SETUP」後進入「標准CMOS設置」菜單。
第1部分是日期和時間的設置,可以用游標配合「Page Up」和「Page Down」依次設置成當前日期和時間。
第2部分的「HARD DISKS」等用於硬碟參數設置,從「Primary Master/主IDE口主盤 」至「Secondary Slave/從IDE口從盤」共可設置4塊硬碟。你應該根據自己的需要設置,如果希望電腦啟動時間快些,那麼可以將其設置為「USER」比較好。
第3部分「Drive A」至「Floppy3 Mode Support」項用於設置軟碟機。其中軟碟機「A」 和「B」都可以分別根據所使用的具體規格,如「3�5英寸1�44MB」等進行設置。在這部分還有一個「Floppy 3 Mode Support」設置,是為用戶使用日本標准軟碟機預備的,我們在此可將其設為「Disabled」。
第4部分中「Video」設置系統顯示方式,一般都設為「EGA/VGA」;「Holt on」用於設置系統啟動時出錯處理,目的是讓系統啟動時檢測到哪些硬體故障才中止引導以等待用戶處理,設置內容中有幾種選擇,較常用的是 「All Errors」,即發現任何硬體有問題都中止引導,另外還有選擇允許鍵盤報錯繼續引導的設置等。
2、BIOS屬性設置
從主菜單上選擇「BIOS FEATURES SETUP」即進入「BIOS屬性設置」菜單。此設置中第1項「Virus Warning/病毒防範」除了在安裝操作系統如DOS6�xx和Windows9x/200 0/NT等的過程中須設置為「Disabled」外,其餘時間應該都設為「Enabled」。
第2、3、4和5項是涉及CPU的。其中「CPU Internal Cache/CPU內部緩存」、「Ex ternal Cache/外部緩存」用來管理CPU的L1 Cache和L2 Cache。如果使用賽揚(主頻為2 66和300MHz的除外)、PentiumⅡ和PentiumⅢ可全部設為Enabled。第4項「CPU L2 Cache ECC Checking/CPU二級緩存ECC校驗」一般情況下設為Enabled,但使用PⅡ233 、PⅡ266時可設為Disabled,因為這兩種CPU的L2 Cache不具備ECC校驗功能,設為Enable d時反而會降低系統啟動速度。第5項「Processor number feature/處理器序列號功能」用於控制PentiumⅢ編號(ID),此項設置毫無作用。
另外一些是關於系統啟動時的設置,其中「快速自檢/Quick power on self test」可設為「Enabled」,這樣系統在啟動時只對內存檢驗一遍,而設為「Disabled」時則在啟動時將對內存檢驗三遍,自然要慢些;至於「CPU更新日期/CPU Update Data」的確切含意不太清楚,像是顯示CPU更新時間,暫按BIOS推薦值設為「Enabled」;「優先網路啟動/Boot From LAN First」項用於「網卡」等啟動優先設置,除聯網使用外一般都設為「Disabled」,;「系統引導順序/Boot Sequence」 就是經常提到的從C盤或A盤啟動設置,其中的設置選擇較多,有光碟機、「D:」等優先啟動設置等,但比較簡明。注意其中從「D」盤啟動是指物理D盤(即所使用的第二塊硬碟)而不是邏輯D:盤。
「軟碟機盤符交換/Swap Floppy Drive」用於交換兩塊軟碟機的「A:」、「B:」盤符,即如果有兩塊軟碟機可以通過此項設置將事實上的「A:」改為「B:」驅等;「引導顯示卡/VGA Boot From」用於設置電腦在使用雙顯示卡時以PCI還是AGP顯卡作為啟動時即顯示的主卡,此項設置根據你自己使用的顯卡匯流排類型而定,另外這項在給BIOS失效的顯卡重寫BIOS時也有用,例如在為BIOS失效的AGP卡重裝BIOS時,可另插PCI 顯卡引導系統進行操作。
「引導時檢查軟碟機/Boot Up Floppy Seek」意義明確,你可根據自己需要分別設為「Ena bled」或「Disabled」,但設為「Enabled」時,啟動時軟碟機「吱吱」作響挺煩的。
「啟動時副鍵盤狀態/Boot Up NumLock Stating」決定啟動後數字小鍵盤狀態,設為「O N」時為數字輸入有效(鍵盤上NumLock燈亮),反之為游標有效狀態;「Typematic Rate Sett ing」、「Typematic Rate(Chars/Sec)」和「Typematic Delay(Msec) 」三項用於調整鍵盤錄入速度,意義不大。
「密碼使用選擇/Security Option」設置有「System」和「Setup」分別是確定密碼是每次啟動系統(包括熱啟動)時都用還是僅在進入BIOS設置時才用。
「顯示校正/PCI-VGA Palette Snoop」是在ISA和PCI匯流排上分別使用兩塊顯示板卡(如增加了VCD/DVD解壓卡)時出現色彩不正常時可設為「Enabled」試試,一般都應設為「Disabled」 。「Assign IRQ For VGA」則是設置由系統自動為顯示卡配置中斷(IRQ),目的是在系統中安裝有I SA介面的解壓卡等時使用,通常應該設為「Disabled」。
「OS Select For DRAM>64MB」這項只在電腦安裝使用「OS/2」操作系統時才用,因為目前大多數用戶的電腦中多安裝DOS和WIN9x之類,所以應該設為「No-OS/2」。
「HDD S�M�A�R�T� capability」用於開啟硬碟的「故障自監測報告」功能,如果你的硬碟具備這一保護功能請設為「Enabled」,如果不具備這一功能,打開此開關也不影響系統正常運行。
「Report No FDD For WIN95」的意思是在系統啟動時如果發現沒有軟碟機(或故障)時報告 Windows9x,可設為「Enabled」。
最後一項「Video BIOS Shadow」用於啟動後將顯示卡的BIOS程序映射在內存中(開辟保留區)中,這樣從理論上可以提高電腦顯示速度,所以可以設為「Enabled」。
3、晶元組功能設置
從主菜單上選擇「CHIPSET FEATURES SETUP」進入晶元組功能設置。此項設置中的具體內容因主板而異,但基本上都包括對系統硬體狀態監測、CPU超溫保護設置和對內存、顯存狀態設置等。
「Reset Case Open Status」和「Case Opened」項用於設置電腦機箱(開啟)狀態監測和報警,一般設為「No」。
「Slow Down CPU Duty Cycle」用於選擇CPU降速運行比例,可分別選擇「Norma l」或「79%」及其它百分比。
「Shutdown Temp�(℃/�)」用於設置系統溫度過高時自動關機初始值,同時用攝氏或華氏溫度表示。
「***Temp� Select(℃/�)**」項為選擇保護啟動溫度初始值,同樣使用攝氏和華氏溫度表示,此處僅對CPU進行設置。
「**Temperature Alarm**」用於設置CPU過溫報警,應該設為「Yes」;然後就是系統對硬體監測所採集的數據,其中有「CPU」風扇、「Power/電源」和「Panel/板」風扇的運行狀態,如果是使用非原裝風扇,由於沒有測速功能,系統將會認為CPU風扇故障而報警,所以此時應該將其設為「No」,其它風扇報警功能也應該予以設為「No」,對於系統監測顯示的CPU電壓和溫度等狀態參數用戶只能看不能修改,但對於具備超頻設置功能的BIOS中將包括對CPU的內核工作電壓和I/O電壓的微調,這部分內容須根據具體主板BIOS內容進行設置。
其次是對內存的運行速度進行設置,「SDRAM CAS latency Time」項設為「Auto」是使系統啟動時自動檢測內存,然後根據內存「SPD」中的參數進行設置,這樣系統工作時不會因人為設置內存運行速度過高而出錯。不過如果你買的是假內存(假SPD),那麼系統運行時可就要給你鬧別扭了。另外也可以按具體值分別設為「2」或 「3」等,視內存質量而定,數值越小時內存運行速度越快。
「DRAM Data Integrity Mode」則用於設置內存校驗,由於目前多數用戶使用的都是不具備ECC校驗功能的SDRAM,所以這項自動設為「No-ECC」。
對於「System BIOS Cacheable」和「Video BIOS Cacheable」兩項的設置是允許將主板BIOS和VGA BIOS映射在高速緩存或內存中,理論是可以提高運行速度,但部分電腦使用時可能有問題,所以應根據試驗後設置為「Enabled」,否則設為「Disabled」,使BIOS僅映射在內存中較為妥當。
「16 Bit I/O Recovery Time」項是輸入/輸出16位數據的器件傳輸復位速度,一般可分別設為「1」至「4」等,通常數值小、速度快。
「Memory Hole At15M-16M」是為ISA設備保留15~16M之間的內存而設的,一般設為 「Disabled」。如果你的Windows啟動後少了1MB內存(通過控制板中系統屬性查看),那麼不妨檢查一下是不是這項設成了「Enabled」。
「Delayed Transaction」是為解決PCI2�1匯流排的兼容問題而設,理論上設為「Enab led」可使用PCI2�1標准卡,但如設為「Enabled」可能會出現PCI2�1設備與普通PCI和ISA設備之間的兼容問題,所以一般推薦設成「Disabled」。
「Clock Spread Spectrum」項是為了抑制時鍾頻率輻射干擾,但需要硬體(主板)支持,所以可根據實際情況設為「Enabled」或「Disabled」。
4、電源管理設置
在主菜單上選擇「POWER MANAGEMMET SETUP」後進入「能源管理設置」菜單。
其中「Power Management」的設置有「Disabled」和「Enabled」,設為「Ena bled」時能源管理才有效。「PM Control by APM」的意思是將能源管理交給系統(指WIN9x)的 APM(「高級能源管理」的英文縮寫),可根據你的意願分別設為「Yes」或「No」,但交予系統管理要更好些。
「Video off Method」項用於控制顯示器,有「DPMS/顯示能源管理系統」、「亮度關閉/B lank Screen」、「關亮度並切斷同步信號/V/H SYNC+Blank Screen」等三種模式可選,但其中「DPMS」節能效果最好,為推薦設置,但需符合DPMS規范的顯示器和顯卡支持,如果設備不符合DPMS,可再試設置成另兩項。
「Suspend Mode」是休眠時間設置,可將時間設在1分至1小時之間,意思是超過所設時間後系統自動進入休眠狀態。如果電腦中裝有CD-R/W刻錄機進行刻盤時最好將設為「Disabled」,以關閉休眠功能提高刻盤成功率。
「HDD Power Down」項設置硬碟自動停轉時間,可設置在1至15分鍾之間,或設為「Disabl ed」關閉硬碟自動停轉。
「VGA Active Monitor」項用於設置顯示器亮度激活方式,可設為「Disabled」和「E nabled」兩種。
「Soft-off by PWR-BTTN」項確定關機模式,設為「Instant-Off」,關機時用戶按下電源開關,則立刻切斷電源,設為「Delay4Secs」時,則在按下電源開關4秒鍾後才切斷電源,如果按下開關時間不足4秒,則自動進入休眠模式,所以一般按習慣設為「Instant-Off」。
「Power LED In Suspend」項設置機箱電源指示燈在系統休眠時的狀態,可設為「閃動/Bl anking」、「亮/On」和「Off/Dual」等,通常按習慣設為「Blanking」使電腦在休眠時電源燈閃爍提醒用戶注意。
「System After AC Back」項設置電腦在交流電斷電後又恢復時的狀態,可設為「斷電/So ft-off」、「開機/Full On」、「Memory By S/W」和「Memory By H/W」三項,一般都設為停電後再恢復供電時電腦不自動開機,即設為「斷電/Soft-off」。
「CPUFAN off In suspend」項是設置CPU風扇在系統休眠時自動停轉,可根據自己的風扇(只對原配或帶測速功能的風扇有效)設為「Disabled」或「Enabled」。
「PME Event Wakeup」一項不詳,先按預設設置為「Disabled」。
「ModemRingOn/WakeOnlan」用於通過網路或Modem實現遠程叫醒開機的設置,只要你不使用這些功能,就都可設為「Disabled」,如果需要再設為「Enabled」。
「Resume by Alarm」項用於定時開機,設置的時間可定在每月某日(00~31)某時某分某秒( 00~23:00~59:00~59),但需要主板和其它硬體支持。
「能源管理設置」中還有「**Reload Global Timer Events**」項,這部分意思大致是對其中所列設備和網路設備以及部分系統資源(IRQ)對系統的激活是否對進入節能狀態時間重新計時。
5、即插即用和PCI資源設置
從主菜單上選擇「PNP/PCI CONFIGURATION」即可進入設置即插即用和PCI資源菜單。這項設置中「PnP OS Installed」意為安裝即插即用的操作系統(自然是指WIN9x)可設為「Ye s」,將PCI和ISA上的中斷、DMA等資源交於操作系統管理,設為「No」時交BIOS管理。
「Resources Controlled By」項用於設置外設和板卡的資源管理,如果設為「AUTO」 交BIOS或操作系統自動管理時的設置內容很少;但設為「Manual」交用戶自己管理時須設置的內容很多,此時要求你必須具有較高的電腦應用水平,否則容易設置不當,造成設備資源使用沖突,所以一般都設為「AUTO」。當「Res ources Controlled By」項設為「AUTO」時,須設置的內容有:「Reset Configur ation Data」項是系統每次啟動時將所檢測硬體配置數據寫入BIOS中,可分別設為「ESCD/外部設備配置數據」、「DMI/桌面管理界面」、「Both/同用」或「Disabled」,由於系統啟動時不寫ESCD並不影響正常運行,所以通常都設為「Disabled」,這樣可能更安全些。
當「Resources Controlled By」設為「Manual」時須設置的內容除前面的幾項外,還將列出系統所有可使用的IRQ和DMA資源由用戶進行設置,設置時可使用「Legacy ISA」和「PCI/IS A PnP」兩種狀態,如果須要為ISA卡保留某一IRQ和DMA(如為音效卡保留IRQ5和DMA6)時可將「IRQ -5 assigned to」和「DMA-6 assigned to」都設為「Legacy ISA」。
「Assign IRQ For USB」項是為了設置保留給USB(通用串列介面)的中斷資源,如果不使用 USB設備,可設為「Disabled」。

⑹ HTTP緩存與header模塊

HTTP緩存分為緩存控制和緩存校驗,緩存控制有Cache-Control和Pragma

Pragma是舊產物,已經逐步拋棄,有些網站為了向下兼容還保留了這兩個欄位。如果一個報文中同時出現Pragma和Cache-Control時,以Pragma為准。同時出現Cache-Control和Expires時,以Cache-Control為准。即優先順序從高到低是 Pragma -> Cache-Control -> Expires

如果在請求header有如下參數

則Pragma的優先順序更高

Cache-Control一般值為

緩存校驗有Last-Modified和ETag

如果請求Cache-Control值為max-age=0,表示客戶端要去服務端做資源校驗,校驗通過會發生304,使用本地緩存的資源,校驗不通過的話,服務端將數據返回給客戶端

服務端在響應時候會有響應頭Last-Modified,這是一個格林威治時間,表示資源最後的修改時間

客戶端在刷新頁面時候,會發一個請求頭If-Modified-Since,表示收到的上一次服務端給的Last-Modified

當服務端會對比自己的Last-Modifed和客戶端的If-Modified-Since,如果

If-Modified-Since >= Last-Modifed

那麼服務端會直接響應304,響應body體長度為0,以下為一個304響應的nginx-access日誌

但是Last-Modifed無法解決資源在一秒內連續修改的問題,一秒內連續修改後,客戶端只會更新一次

更好的解決方法是ETag,伺服器會響應一個根據資源算出來的字元,如

第二次客戶端請求時候會攜帶If-None-Match請求頭

如果

If-None-Match == ETag

表示資源沒有修改,服務端響應304

如果同時有ETag和Last-Modify,則ETag的優先順序會更高

但是ETag也有問題,如果服務端是多節點集群,那麼有可能A節點算出來的ETag和B節點的ETag可能不同,造成無法正常304響應,在nginx中可以關閉ETag

200狀態碼會發生於瀏覽器第一次載入頁面、強制刷新、304校驗失敗、資源緩存過期、瀏覽器禁用緩存情況

如果是瀏覽器第一次載入,那麼請求頭不會有 Cache-Control 、 If-None-Match 、 If-Modified-Since

服務端正常響應200,正常將數據傳給客戶端

如果是強制刷新,那麼瀏覽器會強制加請求頭

表示需要服務端響應真實數據,不用做校驗

如果瀏覽器禁用了緩存Disable Cache,那麼也會強制加請求頭no-cache

304狀態碼會發生於刷新頁面情況

刷新情況瀏覽器會強制加請求頭

表示需要瀏覽器校驗,校驗成功就是304,校驗失敗就是200

發生過程

由於訪問靜態資源,服務端通常都會響應Cache-Control:max-age,表示需要客戶端緩存這個靜態資源多長時間,如

同一個瀏覽器新窗口再次訪問會發生from disk cache

from disk cache情況服務端不會收到請求

響應碼為 200 , 201 , 206 , 301 , 302 , 303 , 307 , 308 情況下會發這個響應頭
參數可以是正數或者負數,如果為負,則發送的頭為

可以配置max,這樣響應的就是,可以認為是永久緩存

off參數可以禁用添加或者修改expire和Cache-Control響應

響應碼為200、201、204、206、301、302、303、304、307、308則添加指定的響應頭
如果當前級別沒有add_header,則從上一個級別繼承,僅僅當前級別沒有的話
如果定義了always,則不管響應碼為多少都添加header

⑺ thinkphp 數據緩存是否校驗緩存是什麼意思

在ThinkPHP中進行緩存操作,一般情況下並不需要直接操作緩存類,因為系統內置對緩存操作進行了封裝,直接採用S方法即可,例如:

  • 緩存初始化

// 緩存初始化

S(array('type'=>'xcache','expire'=>60));

緩存初始化可以支持的參數根據不同的緩存方式有所區別,常用的參數是:

參數 描述

expire 緩存有效期(時間為秒)

prefix 緩存標識前綴

type 緩存類型

系統目前已經支持的緩存類型包括:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache。

如果S方法不傳入type參數初始化的話,則讀取配置文件中設置的DATA_CACHE_TYPE參數值作為默認類型。同樣的道理,prefix參數如果沒有傳入會讀取配置文件的DATA_CACHE_PREFIX參數值,expire參數沒有傳入則讀取DATA_CACHE_TIME配置值作為默認。

有些緩存方式會有一些自身特殊的參數,例如Memcache緩存,還需要配置其他的參數:

S(array(

'type'=>'memcache',

'host'=>'192.168.1.10',

'port'=>'11211',

'prefix'=>'think',

'expire'=>60)

);

對於全局的緩存方式,一般我們建議添加prefix(緩存前綴)參數用以區分不同的應用,以免混淆。

  • 緩存設置

// 設置緩存

S('name',$value);

會按照緩存初始化時候的參數進行緩存數據,也可以在緩存設置的時候改變參數,例如:

// 緩存數據300秒

S('name',$value,300);

甚至改變之前的緩存方式或者更多的參數:

// 採用文件方式緩存數據300秒

S('name',$value,array('type'=>'file','expire'=>300));

如果你在緩存設置的時候採用上面的數組方式傳入參數的話,會影響到後面的緩存存取。

緩存讀取

// 讀取緩存

$value = S('name');

緩存讀取的是前面緩存設置的值,這個值會受緩存初始化或者緩存設置的時候傳入的參數影響。 如果緩存標識不存在或者已經過期,則返回false,否則返回緩存值。

  • 緩存刪除

// 刪除緩存

S('name',null);

刪除緩存標識為name的緩存數據。

對象方式操作緩存

我們可以採用對象方式操作緩存,例如:

// 初始化緩存

$cache = S(array('type'=>'xcache','prefix'=>'think','expire'=>600));

$cache->name = 'value'; // 設置緩存

$value = $cache->name; // 獲取緩存

unset($cache->name); // 刪除緩存

如果你設置了緩存前綴的話,對應的緩存操作只是對應該緩存前綴標識的,不會影響其他的緩存。

關於文件緩存方式的安全機制

如果你使用的是文件方式的緩存機制,那麼可以設置DATA_CACHE_KEY參數,避免緩存文件名被猜測到,例如:

'DATA_CACHE_KEY'=>'think'

  • 緩存隊列

數據緩存可以支持緩存隊列,簡單的說就是可以限制緩存的數量,只需要在初始化的時候指定length參數:

S(array('type'=>'xcache','length'=>100,'expire'=>60));

設置了length參數後,系統只會緩存最近的100條緩存數據。

⑻ b站緩存文件校驗失敗 為什麼

這是因為系統檢測到在讀取應用程序的文件安裝信息時錯誤。

解決的辦法很簡單:

1.升級到最現版。

2.徹底卸載原來的版本再重新安裝就好了。

3.包括軟體安裝時產生的配置文 件、文檔存儲、和注冊表信息。 這些往往都會影響二次純凈安裝的效果。

緩存(cache),原始意義是指訪問速度比一般隨機存取存儲器(RAM)快的一種高速存儲器,通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。緩存的設置是所有現代計算機系統發揮高性能的重要因素之一。



工作原理:

緩存的工作原理是當CPU要讀取一個數據時,首先從CPU緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就從速率相對較慢的內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

⑼ Redis 緩存和資料庫之間的數據校驗該怎麼做

Redis 緩存和資料庫之間的數據校驗該怎麼做
這種writer-reader架構,一般思路是在緩存更新階段由writer來解決一致性問題,當資料庫數據變化時,同步更新redis並確保緩存更新成功。
作為完整性判斷,可以不檢查全部的屬性,而對數據使用一個自增的版本號(或時間戳)來判斷是否最新。
作為後置的檢測,可以優化來降低掃描的代價,如只針對最近一個時間周期內(如10min)資料庫中更新過的數據,這個集合應該比較小,去redis中進行檢查的代價會比較低。