伺服器沒有了緩存模塊
❶ 求助為什麼突然間一個伺服器都沒有了
有幾個情況會導致這個現象出現:1.你的網速過慢,網頁代碼沒有完全下載就運行了,導致不完整。請刷新。2.網頁設計錯誤,導致部分代碼不能執行。3.你的瀏覽器不兼容導致部分代碼不能執行。4.你的IE瀏覽器緩存出錯,請右鍵點擊桌面IE瀏覽器,選擇屬性,在常規頁面里,點擊刪除文件這個按鈕,選擇全部刪除,並且點擊刪除cookies按鈕。5.網站伺服器訪問量太大,導致伺服器超負載,部分代碼沒有完全下載就提示瀏覽器完畢,導致錯誤。你可以多刷新,或者換一個網速比較好的時候訪問(前提是這個網站是個大網站,不會出現問題)6.問題可能是因為QQ空間系統進行日常維護更新,所以經常出現一些QQ系統繁忙,空間網頁,導航 播放器, 模塊不能顯示,日誌看不到.裝扮無法保存.QQ簽名擋不能改.QQ面板顯示不出QQ空間,QQ空間的圖標不亮,閃圖不會閃,空間歌播放不流暢或者驗證碼一直出錯之類的問題。請不要著急.多開幾次或者等系統維護好了就行了。或者你可以嘗試按照以下方法處理:一、一定要清除IE垃圾!這可以幫助您解決很多訪問上的問題!清除方法:1、請您點擊IE瀏覽器中的「工具」,選擇「internet選項」; 2、在「常規」頁面點擊「刪除文件」,然後勾上「同時刪除離線內容」,點擊確定; 二、請您點擊IE瀏覽器中的「工具」選擇「internet選項」,進入「安全」頁面,點擊「自定義級別」,對「對標記為可安全執行腳本的ActiveX控制項執行腳本」設置為「啟用」; 三、您可以嘗試暫時關閉相關上網助手等,再進入QQ空間進行訪問,如果可以訪問,請檢查您的上網助手設置; 四、確認您的防火牆沒有阻止Qzone.exe訪問網路。
❷ 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
❸ php網站發布文章不能生成html了,後台【更新緩存】功能失效,怎麼辦急!
如果一開始就不能生成,有可能網站目錄的許可權不可寫;如果一直都能生成,突然不能了,則回想一下此前是否改過模板,可能改出毛病了,退回模板修改之前,也許就解決了。
❹ html5的離線web應用的瀏覽器和伺服器交互的過程要是沒有緩存怎麼辦
html5的離線web應用的瀏覽器和伺服器交互的過程要是沒有緩存就需要每次交互都要實時介面調用,增加網路開銷。
一、離線存儲的作用
1、用戶可離線訪問應用,這對於無法隨時保持聯網狀態的移動終端用戶來說尤其重要
2、用戶訪問本地的緩存文件,通常意味著更快的訪問速度
3、僅僅載入被修改過的資源,避免同一資源對伺服器多次的請求,大大降低了對伺服器的訪問壓力
二、實現離線存儲
1、在html標簽里通過manifest屬性引用一個cache.manifest文件,該文件里聲明了瀏覽器需緩存的所有資源文件,如下所示:
<!DOCTYPE html>
<html lang='cn' manifest='cache.manifest'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>離線緩存示例頁面</title>
<!-- CSS文件引用 -->
</head>
<body>
<!-- 各種標簽 -->
</body>
<!-- 各種腳本文件 -->
</html>
2、關於cache.manifest的定義
CACHE MANIFEST
# 注釋:需要緩存的文件,無論在線與否,均從緩存里讀取
chched.js
cached.css
# 注釋:不緩存的文件,無論緩存中存在與否,均從新獲取
NETWORK:
uncached.js
uncached.css
# 注釋:獲取不到資源時的備選路徑,如index.html訪問失敗,則返回404頁面
FALLBACK:
index.html 404.html
❺ 關於RAID卡和緩存模塊的問題!
個人建議,採用RAID5比較好。畢竟是伺服器,數據是非常重要的。
=============資料================
RAID Level 5 是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬碟分割)技術。 RAID 5不對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁碟上,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁碟上。當RAID5的一個磁碟數據發生損壞後,利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。 RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供數據安全保障,但保障程度要比Mirror低而磁碟空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的數據讀取速度,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁碟進行寫入操作稍慢。同時由於多個數據對應一個奇偶校驗信息,RAID 5的磁碟空間利用率要比RAID 1高,存儲成本相對較低。
❻ nginx緩存(proxy_cache模塊)
緩存的基本思想是利用客戶端訪問的時間局限性,將客戶端訪問過的內容做一個副本,在一定時間內存放到本地,當改數據下次被訪問時,不必連接到後端伺服器反復去查詢數據,而是由本地保存的副本響應數據。
保存在本地的這些副本具有一個過期時間,超過該時間將會更新。判斷一個副本數據是否為過期數據的辦法有很多,可以使用保留時間來判斷,也可以使用數據完整度來判斷。
許多Web伺服器還具有校驗功能,就是當某些副本數據過期以後,先向後端伺服器發送校驗請求,後端伺服器對這些數據進行校驗,如果發現原數據和副本沒有差別,則將過期副本重新置為可用副本。
以上nginx配置結合使用:
proxy_params文件的配置如下:
訪問一次頁面,並向 http://www.blogs-s.com:8080/api/ 發起一個介面數據請求,查看/cache/nginx目錄下的緩存結果:
ngx_cache_purge是nginx的第三方模塊,能夠幫助我清除nginx中的緩存。
在之前的nginx編譯安裝中我們是沒有把緩存的清除模塊ngx_cache_purge編譯進去的,如果啟動了緩存,沒有安裝這個模塊,在之後的調試中我們嘗試去清除緩存時,將會出現異常:
這個異常是在指示我們,找不到該指令的驅動,需要按照相關模塊。
ngx_cache_purge只是nginx的第三方模塊,並不是某個特殊的軟體,所以我們需要對nginx重新進行編譯,操作如下:
配置nginx:
再一次啟動nginx成功;
接下來進行緩存清除測試,訪問: http://blogs.com/clear_cache/api/index.php , 訪問這個連接將會清除介面: http://blogs.com/api/index.php 的緩存數據。
結果如下:
在項目開發中,不可能出現什麼都需要緩存的數據,緩存僅僅適合去緩存查詢頻繁,但是不需要實時更新的數據,這個是它適合的場景,而我們上面的配置,只要是訪問api介面目錄就會緩存介面的數據,這樣對於一些需要實時更新的介面數據來說是不合理的,需要控制好nginx的緩存去緩存什麼以及不緩存什麼
set 指令為變數設置,proxy_no_cache參數中的值可以設置多個,但是多個值中,只要有一個是不為0的,就會通過緩存響應數據。
該指令用於配置一塊公用的內存區域的名稱,該區域可以存放緩存的索引數據。這些數據在Nginx伺服器啟動時由緩存索引重建進程負責建立,在Nginx伺服器的整個運行過程中由緩存管理進程負責定時檢測過期數據,檢索等管理工作。
該指令用於配置Nginx伺服器向客戶端發送響應數據時,不從緩存中獲取的條件。這些條件支持使用Nginx 配置的常用變數。
看一個例子:
其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma 和Shttp_authorization 都是Nginx配置文件的變數,
該指令用於設置Nginx伺服器在內存中為緩存數據建立索引時使用的關鍵字
如果我們希望緩存數據包含伺服器主機名稱等關鍵字,則可以將該指令設置為:
該指令用於設置是否開啟緩存的鎖功能。在緩存中,某些數據項可以同時被多個請求返回的響應數據填充。開啟該功能後,Nginx伺服器同時只能有一個請求填充緩存中的某一數據項,這相當於給該數據項上鎖,不允許其他請求操作。其他的請求如果也想填充該項,必須等待該數據項的鎖被釋放。這個等待時間由 proxy_cache_lock_timeout 指令配置。
該指令用於設置緩存的鎖功能開啟以後鎖的超時時間。具體細節參見proxy_cache_lock 指令的相關內容
其中,time為設置的時間,默認為5s。
該指令用於設置客戶端請求發送的次數,當客戶端向被代理伺服器發送相同請求達到該指令設定的次數後,Nginx伺服器才對該請求的響應數據做緩存。合理設置該值可以有效地降低硬碟上緩存數據的數量,並提高緩存的命中率。
其中,number為設置的次數。默認設置為1。
該指令用於設置Nginx伺服器存儲緩存數據的路徑以及和緩存索引相關的內容
該指令設置比較復雜,一般需要設置前面三個指令的情形比較多,後面的幾個變數與Nginx伺服器緩存索引重建進程及管理進程的性能相關,一般情況下保持默認設置就可以了。我們來看幾個簡單的配置實例:
如果Nginx在訪問被代理伺服器過程中出現被代理的伺服器無法訪問或者訪問錯誤等現象時,Nginx伺服器可以使用歷史緩存響應客戶端的請求,這些數據不一定和被代理伺服器上最新的數據相一致,但對於更新頻率不高的後端伺服器來說,Nginx伺服器的該功能在一定程度上能夠為客戶端提供不間斷訪問。該指令用來設置一些狀態,當後端被代理的伺服器處於這些狀態時,Nginx伺服器啟用該功能。
該指令可以支持的狀態如語法結構中所示。
該指令可以針對不同的HTTP響應狀態設置不同的緩存時間,
該指令同於配置在什麼情況下不使用cache功能
該指令配置是否在本地磁碟緩存來自被代理伺服器的響應數據。這是Nginx伺服器提供的另一種緩存數據的方法,但是該功能相對 Proxy Cache簡單一些,它不提供緩存過期更新、內存索引建立等功能,不佔用內存空間,對靜態數據的效果比較好。
Proxy Store方法多使用在被代理伺服器端發生錯誤的情況下,用來緩存被代理伺服器的響應數據。
該指令用於設置用戶或用戶組對Proxy Store緩存的數據的訪問許可權,
有關Proxy Store方法的使用,我們通過官方給出的實例加深理解,在該實例中筆者通過注釋對配置做了說明:
❼ 如何啟用vFlash伺服器端緩存
•目前的版本可擴展到最多32個ESXi主機/節點,每個主機最多支持8個固態硬碟,每個主機最多支持4TB。
•當你啟用vFlash後,它會創建一個新型的文件系統,名為虛擬快閃記憶體文件系統(即VFFS)。
•VFFS仍會在VFFS上為交換到固態硬碟這項傳統功能提供支持。
•為虛擬機啟用vFlash時,你可以在一個VMDK而不是在另一個VMDK上啟用它。你還可以控制每個VMDK緩存的塊大小。
•這種緩存操作對虛擬機的操作系統和應用程序而言是透明的。
兩個方面讓vFlash顯得很獨特。首先,VMware完全支持它,即便推出了高級的vSphere功能,比如vSphere高可用性、分布式資源調度工具(DRS)和vMotion。
其次,vFlash框架向第三方開發和管理開放。這意味著,第三方廠商可以開發新的工具,或者將現有的存儲工具與vFlash集成起來。vFlash框架讓廠商們可以開發出vFlash插件(名為vFlash緩存模塊),而VMware vFlash Cache(vFC)插件是我在此討論的默認插件。
在你開始點擊滑鼠、試圖啟用vFlash之前,確保你的系統滿足下面這些要求:
•你必須擁有vSphere企業增強版(vSphere Enterprise Plus)的許可證。這是支持vFlash的唯一vSphere版本。
•你必須擁有本地、未使用的固態硬碟磁碟。你無法用它們來啟動ESXi、無法存儲虛擬機,也無法用於VMware vSAN。
•你必須使用vSphere 5.5、vCenter 5.5和vSphere Web客戶程序。你無法在vSphere Client for Windows中配置vFlash。
不過,配置vFlash很容易,通過vSphere 5.5 Web客戶程序,分三個步驟來完成:
1. 配置虛擬快閃記憶體資源。在每個ESXi主機上都要完成這一步。點擊Manage(管理)選項卡,再點擊Settings(設置),在新的Virtual Flash(虛擬快閃記憶體)部分,選擇Virtual Flash Resource Management(虛擬快閃記憶體資源管理)。點擊Add Capacity(添加資源),就可以將你的本地固態硬碟作為一種快閃記憶體緩存資源添加上去。
2. 配置虛擬交換主機緩存。下一步,點擊Settings(設置)下面的虛擬快閃記憶體主機交換緩存配置選項。點擊Edit(編輯),即可改動虛擬交換主機緩存配置。然後點擊啟用虛擬交換主機緩存的復選框,並且指定緩存大小(這個大小可以是你的整個固態硬碟,如果你選擇這么做的話。)
3. 在你的虛擬機上配置vFlash。最後,你需要針對每個虛擬機、每個VMDK來啟用vFlash。為此,依次進入到你的虛擬機設置、虛擬機磁碟文件配置以及虛擬快閃記憶體讀取緩存配置,然後輸入一個值。這為該VMDK指定了讀取緩存配置大小。你在這里還可以為該虛擬機和VMDK指定讀取緩存的塊大小。
至此,vFlash已配置完畢。你應該很快可以開始看到該虛擬機及其應用程序執行的所有讀取操作的性能得到了提升。
❽ PHP關於伺服器緩存的提問
一、除非你的整個WEB伺服器只做一個論壇使用,否則用APPLICATION裡面放論壇索引是不科學的。
二、每次都從資料庫裡面取也無可厚非,資料庫有自己查詢緩存系統,這樣的事情交給資料庫去做是對的,老是過份的考慮得這么細,在開發大型系統應用的時候會嚴重影響效率。
三、如果使用一般資料庫,希望進行一下優化,不用每次都在資料庫裡面取,也是可行的,方法是在編寫好每次都從資料庫裡面取的程序以後,進行如下兩個方面的變化:
1是在從資料庫裡面取數的地方,增加判斷是否存在相應的靜態html文件,如果存在就從文件裡面讀,否則從資料庫裡面取出來,並在輸出之前保存到html文件裡面,邏輯如下:
$cachefile='靜態html文件名.html';
if (file_exists($cachefile)) $out_str=file_get_contents($cachefile);
else{ $out_str='';//接著從資料庫裡面取出內容,並添加到字元串變數$out_str後面
$fp=fopen($cachefile,'w');fputs($fp,$out_str);fclose($fp);
}
echo $out_str;//輸出內容
2還需要修改所有針對上面的內容進行delete和update的程序,在修改資料庫之後增加刪除文件的功能,大致結構是:
$cachefile='靜態html文件名.html';
delete($cachefile);