asp.net html 扩展,StaticHtml
staticHtml使用教程
阅读目录
[TOC]
##简介
staticHtml是asp.net平台的一个开源,高效,易扩展的网页静态化组件,不依赖任何第三方库,简单小巧dll文件不足20k。
特性
无需更改您任何代码,只需要简单的配置,即可使您站点具有html静态化的能力,提高您网站的性能,
完全使用GZip存储,输出,减少服务器硬盘消耗,大大减少网络带宽
支持内存缓存,您可以按照您的需要,将部分缓存页面, 直接缓存到内存,提高性能,比如说常用的首页
自动判断30*,50*等输出头,不进行缓存
缓存策略灵活,系统支持时间过期策略,支持查询数据库过期策略
如何使用
1. 在web.config文件configSections节点中添加配置读取节点如下
2. 在system.web/httpmodules节点中添加如下节点
3. 在config节点中添加如下节点
4. over
配置完成,当您访问您的页面domain/index.aspx时候,系统将缓存您的页面到内存,每5分钟刷新一次。当您访问的您的网页,url中如果保护有Content/的时候,缓存180秒,缓存内容保存到cacheHtml_Content目录下面,采用访问的url md5加密的形式作为系统的唯一的key,也是文件存储的名字。
如何扩展
或许大家看到配置文件的时候也猜到一些东西,对,上面那些配置都是可以自定义的,可以简单的实现一些接口,即可实现您自己的功能。事实上,这些配置就是为了让您回答这么几个问题
您需要缓存什么样的页面
您缓存的东西存在哪里
你采用一个什么样的缓存过期策略
您通过什么样的方式,将你缓存的页面,生成一个系统唯一的key, 在系统里面, 这个key就代表了这个页面。 也将用这个key生成的缓存文件的文件名
这4个问题,您都可以自定义的回答,只需要简单的继承系统里面的接口,配置上去就可以
您需要缓存什么样的页面
public interface IPatten
{
///
/// 将HttpRequest判断是否匹配Rule规则
///
/// HttpRequest请求
/// 是否匹配
bool IsPatten(HttpRequest request);
}
您缓存的东西存在哪里
///
/// 存储生成的Html缓存内容接口
///
public interface IStore
{
///
/// 存储Html
///
/// HttpRequest生成的key
/// 内容
void Save(String key, Stream repInfo);
///
/// 获取缓存的Html
///
/// HttpRequest生成的key
/// 内容
Stream Get(String key);
///
/// 查询缓存信息
///
/// HttpRequest生成的key
/// HtmlInfo包含存储时间,大小等
CacheInfo Query(String key);
}
你采用一个什么样的缓存过期策略
///
/// 该缓存内容是否过期判断接口
///
public interface IExpire
{
///
/// 是否过期
///
/// 当前HttpReq
/// 缓存信息
/// 是否过期
bool IsExpire(HttpRequest req, CacheInfo info);
}
您通过什么样的方式,将你缓存的页面,生成一个系统唯一的key
///
/// 将HttpRequest生成唯一key接口
///
public interface IGenKey
{
///
/// 根据HttpRequest生成唯一key
///
/// HttpRequest请求
/// 唯一key
String GenKey(HttpRequest request);
}
大家可以查看[源码]里面上面的配置文件的配置项,即可查看系统是如何实现这些接口的。
其他
首先感谢大家花这么多的时间,看完这篇文档,因为我知道大家都很忙(校长,城管都那么忙的,呵呵。)。 做这个花费了我很多的时间,本来以为是个很简单的东西,但是却碰到各种奇怪的问题,比方说高并发测试的时候性能非常低,甚至直接卡死整个站点,无法接受任何请求,找出这些问题,废了很多心思,调试了很多。由于是多线程应用,调试起来也非常麻烦。可能也是因为功力不够吧。 网页静态化,在某些场合还是很合适的,它能提高一些服务器的吞吐量。希望能大家测试与使用,并给我反馈,当然了如果您愿意贡献您的智慧,那就更好了,源码我托管在github。有什么问题,可以发送邮件到这个邮箱tianqiq@gmail.com。谢谢!
asp.net html 扩展,StaticHtml相关推荐
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- 为ASP.NET MVC扩展异步Action功能(下)
本文分为上下两部分,您也可以从<Extend ASP.NET MVC for Asynchronous Action>获得全部内容. 执行Action方法 对于执行同步Action的Syn ...
- ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号
写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...
- 检查是否禁止asp.net服务扩展_在 Kubernetes 环境下部署 OpenWhisk 服务
本文使用 Zhihu On VSCode 创作并发布 1. 总体目标 终于开始准备毕业设计了.在和导师们的讨论之后,我们确定之后的研究方向将会专注于 Serverless Computing. 先长舒 ...
- asp:boundfield html,扩展(ASP.NET)BoundField
未经测试: public class HighlightBoundField : DataControlField { //property to indicate if this field sho ...
- 13个 ASP.NET MVC 的扩展
ASP.NET MVC设计的主要原则之一是可扩展性.处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的.因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏 ...
- 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一
摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写.URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.讨论实现 URL 重写的各种技术,并介绍执 ...
- 【翻译】ASP.NET 4中的可扩展输出缓存
翻译自:http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-20 ...
- asp.net学习之扩展GridView
本节讨论如何从现有的控件,进而扩展成强大的,更定制的GridView控件 1.扩展BoundField 默认的BoundField不能显示多文本,文字一多,就会扩大整个Table的Height值,解决 ...
- HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
了解当用户对一个.aspx页面提出请求时,后台的Web服务器的动作流程.当对这个流程了解后,我们就会明白HttpHandler和HttpModule的作用了. 首先,来了解一下IIS系统.它是一个程序 ...
最新文章
- 大牛深入浅出讲解c语言do{...}while(0)功能及用法
- Exynos 4412启动过程(群聊笔记记录)
- 如何不让浏览器读取html缓存,不让浏览器缓存index.html
- LSTM原理解读汇总
- css 横线_atom.css正式发布,从此跟CSS框架说拜拜。
- Java引用类型变量如何分配内存空间?
- js判断软键盘是否开启弹出
- Generation I--组合数和数学
- [mock]10月4日
- Atitit 数据记录存储方式 索引组织表 堆组织表 储方式 InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。这种方式,我们称之为索引组织表(Index Organizi
- Spyder汉化(python汉化)
- linux命令大全密码修改,linux修改密码命令
- 【超图+CESIUM】【基础API使用示例】45、超图|CESIUM - 点光源设置
- Greenplum6.x监控软件搭建
- [内附完整源码和文档] 基于JSP的网上订餐管理系统的设计与实现
- 如何提高产品质量-开发维度
- Qt之图片自适应QLabel的大小
- inter至强服务器处理器型号,Haswell-EP抢先探!至强E5 V3系列CPU规格
- 课堂结队作业:二维数组(2)
- ZZULIOJ 1795 爱吃薯片的寒聚聚
热门文章
- 17. Contoller(2)
- 5. wordpress 简单加速 ---gzip
- 第2讲 ZF2.4 最新框架搭建
- 前端面试宝典(4)——必掌握
- 问题:document.documentElement与document.body的区别
- 客户端(浏览器端)数据存储技术概览
- PIP(Python包管理工具)-Mac环境下安装
- Netty源码分析第1章(Netty启动流程)----第3节: 服务端channel初始化
- django 分页(2) 使用类 页码显示
- HttpWebRequest,HttpWebResponse