- 論壇徽章:
- 0
|
本帖最后由 yanyangtian4502 于 2012-05-17 12:00 編輯
好了,現(xiàn)在到了服務器端了,首先看看內核緩存!
其實這個內核緩存就涉及到操作系統(tǒng)和宿主(IIS,Apache等)
說實在的,我對Windows操作系統(tǒng)和IIS比較了解,對其他的不清楚,但是我相信:原理和思想都是一樣的!
我先以Windows和IIS為例子吧,說完之后,如果熟悉Liunx,Apache等其他平臺的朋友,可以一并分享一下。
首先看一個圖:
20120517115322.png (181.11 KB, 下載次數(shù): 60)
下載附件
2012-05-17 11:53 上傳
當一個請求被HTTP監(jiān)聽者(HTTP.sys)接受之后,它根據(jù)請求的URL進行匹配,然后馬上就把請求放在一個內核模式的不同的隊列中,以便這些請求可以被用戶模式中的應用程序池中工作進程獲取,然后處理。這里之所以要把請求放在隊列中是為了快速的釋放HTTP監(jiān)聽線程,從而使得HTTP.sys可以接受其他更多的請求。另外,請求被放在不同的隊列,主要是根據(jù)請求的URL來分組的,并且應用程序池中也配置了處理何種URL。
當響應產(chǎn)生之后,響應會被再次發(fā)送給HTTP.sys(大家可以看到圖中第5個步驟),然后再把響應發(fā)送給客戶端。HTTP.sys可以基于一些配置將響應進行緩存,我們會在后面進一步的討論。
這里有一點非常中的就是:HTTP.sys將響應緩存在內核中,并且這個內核中的這個緩存空間是不分頁的。
不分頁就意味著HTTP.sys總是將響應的內容緩存物理的內存中,而且這一塊內存不會被交換出去,就是說不會被分頁到磁盤上面。這涉及到了Windows操作系統(tǒng)的內存管理機制,大家自學去吧,呵呵。
當請求的響應被緩存在了內核模式之后,下次再次請求的時候,可以直接的讀取緩存,而后續(xù)的步驟全部跳過,這會極大的提升性能。
另外,有一點我這里要提到的就是一個傳說“很多人常常說要使用靜態(tài),或者偽靜態(tài)”。 我常常也在面試中問別人:為什么要這么搞?
很多人就是支支吾吾,瞎扯一通,最讓我崩潰的回答就是“網(wǎng)上說的”。
大家想知道答案嗎?
呵呵 我稍后回復
我提示一點:這一內核緩存相關 |
|