程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Step1數據系統技術(4.采用服務器端文件緩存)

Step1數據系統技術(4.采用服務器端文件緩存)

編輯:關於ASP.NET

前一章介紹了Cache和http狀態碼304的技術,這屬於服務器端文件緩存,使用該技術可以靈活的將每一個用戶訪問服務器的次數和字節數減少到最低。

不過有這樣一個問題存在,就是上面的緩存都是針對單個用戶的,如果該用戶通常在緩存時間內只訪問該文件一次,是沒有效果的,因此就算這個文件每天被再多的用戶訪問,也起不到緩存效果,而這種情況下需要使用服務端緩存。

使用服務端緩存的理由很多,我使用的主要理由是每個頁面生成對服務器性能的要求過大,因為每個頁面生成的過程序需要多次訪問數據庫,並有可能需要從別的來源獲取數據,而這些都是對性能影響很大的部分,而實際上,1000個用戶訪問的同一個頁面,服務器返回的內容是相同的,這種情況下服務器生成1000次頁面是完全不可取的,如果只在該頁面初次被訪問的時候生成一遍,而在一定時間內該頁面被再次訪問直接使用緩存,將會獲得較大的服務器性能提升。

我的服務器緩存過程是這樣的:當用戶訪問一個頁面的時候(假設不考慮客戶端緩存,因為本章講的是服務端緩存),首先將該URL映射為硬盤上的的一個文件路徑,檢查該文件是否存在。如果存在,則檢查該文件的最後修改日期,如果該文件存在並且還沒有過期,則直接返回該文件內容,而不需要進行數據庫操作;如果文件不存在或已經過期,則生成文件內容保存到相應的文件,再返回該文件內容。

這樣做有幾個好處:

1.並不是所有的文件都預先生成緩存,節省磁盤空間,而且基本上不需要手工干預

2.不需要建立緩存數據庫,因為我認為,只要涉及到訪問數據庫,就會造成性能和穩定性問題,因為數據庫可能是在另一台機器上,我記得有一次我的數據庫崩潰了,而我發現當天網站70%的訪問還是正常的,因為常被訪問的頁面已經被緩存了。

3.緩存訪問快,因為判斷文件是否存在和文件的時間是很快的過程,而且,在大多數的程序語言之中,直接將一個文件返回到浏覽器也是很方便的過程

這樣做也有幾個缺點:

1.如果有人攻擊或者遍歷你的網站的頁面,網站的所有頁面會很快的被生成,硬盤的空間會急劇增加

2.緩存沒有自動清除的功能,也就是說,如果要節省空間,可能需要手工執行一個程序,這個程序自動在緩存文件夾之中找到過期的文件並刪除

總體上來講,根據頁面生成過程的復雜度和數據庫等頁面生成模塊的穩定性來決定是否使用這種服務器端緩存,是很有作用的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved