- 论坛徽章:
- 0
|
本帖最后由 yanyangtian4502 于 2012-05-17 12:00 编辑
好了,现在到了服务器端了,首先看看内核缓存!
其实这个内核缓存就涉及到操作系统和宿主(IIS,Apache等)
说实在的,我对Windows操作系统和IIS比较了解,对其他的不清楚,但是我相信:原理和思想都是一样的!
我先以Windows和IIS为例子吧,说完之后,如果熟悉Liunx,Apache等其他平台的朋友,可以一并分享一下。
首先看一个图:
当一个请求被HTTP监听者(HTTP.sys)接受之后,它根据请求的URL进行匹配,然后马上就把请求放在一个内核模式的不同的队列中,以便这些请求可以被用户模式中的应用程序池中工作进程获取,然后处理。这里之所以要把请求放在队列中是为了快速的释放HTTP监听线程,从而使得HTTP.sys可以接受其他更多的请求。另外,请求被放在不同的队列,主要是根据请求的URL来分组的,并且应用程序池中也配置了处理何种URL。
当响应产生之后,响应会被再次发送给HTTP.sys(大家可以看到图中第5个步骤),然后再把响应发送给客户端。HTTP.sys可以基于一些配置将响应进行缓存,我们会在后面进一步的讨论。
这里有一点非常中的就是:HTTP.sys将响应缓存在内核中,并且这个内核中的这个缓存空间是不分页的。
不分页就意味着HTTP.sys总是将响应的内容缓存物理的内存中,而且这一块内存不会被交换出去,就是说不会被分页到磁盘上面。这涉及到了Windows操作系统的内存管理机制,大家自学去吧,呵呵。
当请求的响应被缓存在了内核模式之后,下次再次请求的时候,可以直接的读取缓存,而后续的步骤全部跳过,这会极大的提升性能。
另外,有一点我这里要提到的就是一个传说“很多人常常说要使用静态,或者伪静态”。 我常常也在面试中问别人:为什么要这么搞?
很多人就是支支吾吾,瞎扯一通,最让我崩溃的回答就是“网上说的”。
大家想知道答案吗?
呵呵 我稍后回复
我提示一点:这一内核缓存相关 |
|