使用HttpHandler整合器的例子
我构建了一个简单的测试网站来向你展示它的使用,该测试网站有两个CSS以及JS文件。Default.aspx仅使用一个<link>和<script>标签通过HttpCombiner.ashx来请求它们。
下面是Default.aspx文件的内容:
就像你看到的那样,有一个<link>标签向HttpCombiner.ashx发送了一个请求并提供了请求集合的名称——Set_Css,当然还有一个<script>标签请求了一个Set_Javascript的集合。
上面的两个集合都被定义在web.config文件中:
这里列出了Handler如何工作:
(1) 首先,它会从“s”参数中读取文件集合的名称
(2) 然后它从web.config文件中拿到集合的定义
(3) 它读取每一个文件,然后将它们缓存在缓冲区中
(4) 缓冲区然后通过gzip进行压缩
(5) 被压缩后的缓冲区内的内容将被发送到浏览器
(6) 被压缩后的缓冲区内的内容被存储在ASP.NET缓冲中,以让随后的对相同集合的请求能够直接地从Cache中获取数据,而不是从文件系统或外部的URL去读取每一个文件。
Handler带来的好处:
(1) 它减少了网络上的“往返”次数,你把越多的文件放到一个集合中,就越能减少网络延时,它提高了性能。
(2) 它缓存了所有的整合过的压缩响应,因此省去了一次又一次的读取文件系统并压缩它。它提供了可扩展性。