如:网站首页 访问量巨大,数据量也非常大
首页是每十分钟更新一次
首页是动态的 Index.aspx
asp.net 页面有一个 Render 方法可以重写,利用这个Reader 把页面的html 生成一个静态缓存文件,
每次访问 Index.aspx 页面的时候,去判断 是否有缓存文件,缓存文件最后的修改日期 和当前时间 是否相隔大于十分钟,然后生成缓存文件
如果缓存文件是在有效期内的,那么 直接用 System.IO.File.ReadAllText()
把内容输出到页面,不知道这样 性能有多大影响????????
默认HTML 是最好的,不知道IIS 是如何处理 静态HTML 的?
难道每次访问 IIS下的一个静态 HTML ,都是从磁盘读取的么?
protected override void Render(HtmlTextWriter writer) { if (!_transmitFile) { StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); base.Render(hw); string content = sw.ToString(); using (StreamWriter stream = File.CreateText(_cachePath)) { stream.WriteLine(content); stream.Flush(); stream.Close(); } sw.Close(); writer.Write(content); }
你可以把网站的默认页面设置为index.html和index.aspx,优先html,当你想更新静态页面的时候,则把HTML删除。
当然,也可以通过某个策略来判断使用哪个页面(虽然这个方案不是完全静态化,但至少减少了渲染时间)。
静态的方法就如你的代码一样。
不一定要将静态化,你把页面加上缓存设置试试。
<%@ OutputCache Duration="600" VaryByParam="*" Location="Any"%>