在分布式框架v1.3中,我们引入了页面缓存机制,主要是用于处理一些页面,这些页面的数据可以缓存成一个静态文件,第一次请求时会生成一个具有过期时间的物理文件,再次提取时会去直接提取该静态物理文件输出给客户端并判断是否过期,这样该页面在缓存后再次访问就会直接调用该静态页的数据而不会去请求动态页面,这样在某种程序上可以减少网站的一些压力,再者在服务器出现故障时甚至可以保持一段时间内的数据访问正常,可以给我们留下更多的时间去处理服务器维修等问题。
缓存页面机制原理其实也很简单,主要是在底层去重写了页面的Render和OnPreInit方法,我们在OnPreInit中去处理拦截请求,判断是否缓存了该页面,如果缓存了就直接读取静态页,然后response.end(),停止该动态页的执行。在Render方法中去将页面生成的html拦截到并生成静态页,代码结构如下图,所有的处理逻辑都在CacheEnabledPage.cs这个类中实现。
原理大致了解后,我们来看怎么去使用这个类,我们以Sql/User/List.aspx调取列表为例,我们让这个页面来实现缓存机制。
1.首先我们需要在web.config中先去配置一下我们的缓存物理目录,就是我们要把缓存的静态文件放到哪个盘下,在configuration中添加节点:
[C#] 纯文本查看 复制代码 <appSettings>
<!--是否开启页面缓存逻辑-->
<add key="cachedPageEnabled" value="true" />
<!--页面缓存路径-->
<add key="cachedPagePath" value="F:\\Distributed_Cached\\" />
</appSettings>
2.需要当前页面继承该缓存机制类CacheEnabledPage,具体代码如下:
[C#] 纯文本查看 复制代码 namespace DistributedWeb
{
public partial class List : CacheEnabledPage
{
}
}
3.我们运行一下网站,请求一次该页面:
然后去看看路径下面有没有生成静态文件:
其实使用步骤很简单,如果某个页面需要缓存机制,只需要处理一下1,2两步就行了,其他的就不用管了,系统会自动去判断缓存页面了。如果你想了解更多的关于缓存机制的实现原理和步骤,可以下载分布式框架自己研究代码...
|