静态页转换平台(StaticPol)-静态页生成终极解决方案
为什么要生成静态页?
这个问题咱们就不多说了,他的优点只有一个,大大提高网站性能,对于数据量大、访问量大的网站不采用静态页输出的解决方案,恐怕真受不了了。缺点就不说了,一大堆...。不过单这一个优点就值得我们研究一番。下面咱们讨论一下静态页生成方案的常规处理方式和 StaticPol 灵活的处理方式,对他们进行一个比较。
说他是一个平台的理由:
常规方式:在每个程序中为静态页生成写相应的模块(程序),执行对应的更新,而且一般都是手动更新(首页、分类页、信息页),好麻烦,即使是定时更新,也要写相应的程序来执行。
StaticPol:他虽然独立运行于 Asp.Net 下,但是可以为 Asp、PHP、Asp.Net、JSP 等任何一种语言编写的程序提供相应的静态页生成服务,为其提供相应的静态页解决方案。
说他是终极解决方案的理由:
常规方式:要么是写程序批量更新,要么就是在添加、修改或删除的时候进行更新。前者就不多说了,简直一个垃圾处理方式,但是还是很多人在使用,后者还好些,但是程序就很死板,任何的一点配置上的变动都要涉及到程序的改动。
StaticPol:静态页的生成和更新都是发生在用户访问时(用户不访问则不生成,因为生成了也没有意义),并且页面的更新是通过策略来控制的,无需人工进行参与,也就是说你只要定义好更新策略就可以,剩下的就由 StaticPol 来帮你完成。用户访问时生成可以节省大量的IO操作资源,策略管理更新可以达到几乎和动态管理功能同步的境界,所以我称之为终极解决方案。
好了,下面就开始简单介绍一下 StaticPol 的执行原理吧:
StaticPol 主要由两个 aspx 文件组成。
Index.aspx : 用于处理 404 错误页的处理。
UpdateStaticFile.aspx : 用于实施对生成页面的策略更新。
Web.config : 存储系统的配置信息,静态更新策略信息。
下面就是我的官方站静态更新策略的部分配置信息:
<!--
静态页生成策略
MakeFilePath : 静态页地址的规则
LookFor : 用于生成该静态页的动态页面地址的规则
UpdatePolicy : 该页生成的规则
◎ None : 无操作
◎ Handwork : 手动(和系统最后更新时间进行比较)
◎ Timespan : 时间差
LastUpdateTime : 本策略使用的最后更新时间(只有 UpdatePolicy 为 Handwork 时才有效)
UpdateTimeUrl : 从指定 Url 上获取本策略使用的最后更新时间(只有 UpdatePolicy 为 Handwork 时才有效)
TimeSpan : 更新的时间差(单位 分钟,只有 UpdatePolicy 为 Timespan 时才有效)
-->
<StaticPolConfig>
<Rules>
<PolRule Remark="首页">
<MakeFilePath>~/([-_,A-Za-z0-9]+)\.html</MakeFilePath>
<LookFor>~/$1.aspx</LookFor>
<UpdatePolicy>Timespan</UpdatePolicy>
<TimeSpan>10</TimeSpan>
</PolRule>
<PolRule Remark="信息页">
<MakeFilePath>~/Index/Catalog(\d+)/(\d+)\.html</MakeFilePath>
<LookFor>~/Index/Catalog$1/$2.aspx</LookFor>
<UpdatePolicy>Handwork</UpdatePolicy>
<UpdateTimeUrl>~/Index/Catalog$1/$2.aspx/LastUpdateTime</UpdateTimeUrl>
</PolRule>
<PolRule Remark="其他页">
<MakeFilePath>~/Index/([-_,A-Za-z0-9]+)\.html</MakeFilePath>
<LookFor>~/Index/$1.aspx</LookFor>
<UpdatePolicy>Handwork</UpdatePolicy>
<LastUpdateTime>2005-9-25 10:50:30</LastUpdateTime>
</PolRule>
</Rules>
</StaticPolConfig>
下面就来介绍一下他的执行过程,我们以IIS为例,首先自定义网站的 404 错误页为StaticPol 中那个Index.aspx,这样接着我们访问这个地址 http://www.seaskyer.net/Index.html ,这个文件默认首次访问肯定是不存在的,IIS会自动转交给404错误页进行处理,也就是刚才设定的那个 Index.aspx 页面,这个时候他开始检测策略配置中是否有匹配的路径,检测到第一个就符合,于是http://www.seaskyer.net/Index.html 是匹配地址 http://www.seaskyer.net/Index.aspx 的,在 404 错误页中就会处理下载 http://www.seaskyer.net/Index.aspx 中的内容并保存回静态路径 ~/Index.html,很显然目录就是网站的根目录下,然后使用脚本 window.location.reload(),此时文件 Index.html 是已经存在的了,就直接访问那个静态页文件了,不在进行 404 错误页处理了。此后再有用户访问时就直接访问的是那个静态页 Index.html 了。
从配置中我们还可以看出他是每 10 分钟更新一次的,那么他是通过什么方式进行的自动更新的呢?
原理也很简单,在生成那个静态页的同时,我们还在那个页面中插入了一段脚本,如:<script language="javascript" src="/StaticPol/UpdateStaticFile.aspx?requestedPath=/Index.html"></script> ,前面已经提到过,UpdateStaticFile.aspx 这个文件就是专门用来处理对生成页面的策略更新的,那他又是如何更新的呢。同样的道理,通过传递过来的参数值requestedPath,可以得到处理的页面,然后检测是否有符合更新的策略,通过传递过来的路径检测到第一个策略就符合该路径,通过检测文件 Index.html 的修改时间和当前时间进行比较,如果大于 10 分钟就会重新获取内容完成页面的更新,只要是在 10 分钟之内就不会更新。
其他的基本上都是这个原理,说的也许还不太详细,等抓些图再贴些代码上来就OK了,今天就先写到这里,以后补上。
目前我的官方站:http://www.seaskyer.net/ (海天人) 就是采用的这个方案。大家可以去看看这个演示。
静态页转换平台(StaticPol)-静态页生成终极解决方案相关推荐
- 静态页转换平台(StaticPol)-静态页生成终极解决方案(转)
静态页转换平台(StaticPol)-静态页生成终极解决方案(转) from http://www.cnblogs.com/pbwf/ 我本身非常不喜欢写文字材料,但是这个东西相信是很多人都需要的, ...
- HTML+CSS+JS网页设计期末课程大作业 :音乐在线网站设计——音乐在线听平台网站(26页) 网页设计成品DW静态网页Html5响应式css3
HTML5期末大作业:音乐在线网站设计--音乐在线听平台网站(26页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页 ...
- HTML+CSS+JS商城网站设计——蛋糕团购商城模板 (4页) 蛋糕团购网页设计制作 简单静态HTML网页作品 商城网页作业成品 网购网站模板
HTML5期末大作业:蛋糕团购商城网站设计--蛋糕团购商城模板 (4页) 蛋糕团购网页设计制作 简单静态HTML网页作品 商城网页作业成品 一.作品展示 二.文件目录 三.代码实现 <!doct ...
- div+css静态网页设计`生活服务同城商城(33页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:生活服务网站设计--生活服务同城商城(33页) 大学生简单个人静态HTML网页设计作品 DIV布局 文章目录 HTML5期末大作业:生活服务网站设计--生活服务同城商城(33页) ...
- DIV布局——仿英雄联盟LOL首页(11页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:仿英雄联盟网站设计--仿英雄联盟LOL首页(11页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 文章目录 HTML5期末大作业:仿英雄联盟网站设计- ...
- uni-app小说阅读页,vue小说阅读页,静态demo
uni-app小说阅读页,vue小说阅读页,静态demo 先看示列图: **整个页面代码(uni-app的页面,放到vue页面需要将代码内的 uni设置的缓存 进行替换成vue的) (文件访问图片请自 ...
- HTML5期末大作业:生活服务网站设计——生活服务同城商城(33页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:生活服务网站设计--生活服务同城商城(33页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 常见网页设计作业题材有 个人 ...
- HTML5期末大作业:仿英雄联盟网站设计——仿英雄联盟LOL首页(11页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:仿英雄联盟网站设计--仿英雄联盟LOL首页(11页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 常见网页设计作业题材有 ...
- HTML5期末大作业:食品超市网站设计——食品超市-功能齐全(31页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
HTML5期末大作业:食品超市网站设计--食品超市-功能齐全(31页) 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 常见网页设计作业题材有 个 ...
最新文章
- 登高自卑 | 我的NumPy笔记
- 右键缺少open terminal选项的解决方法
- DNS与Active Directory在两台服务器分别布署
- jboss jta mysql_JBoss平台下JTA与JMS实验软件架构8
- mysql多启动与日志调优
- Make Games with Python Pygame (2)
- MCtalk教育快报 | 0816
- 二十一、Python爬取百度文库word文档内容
- mongodb运算操作符
- java中子类可否抛出两个父类抛出的异常的子类_父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?...
- js中call()方法和apply方法的使用
- C#.Net工作笔记015---C#中Decimal类型四舍五入_小数点截位
- Django:(02)项目配置
- 【暴力破解】字典工具
- efucms搭建教程_EFUCMS E16小说漫画系统源码 最新完美UI设计漫画/听书直播源码程序...
- eclipse快捷键(alt+/)不起作用的解决办法
- 学C语言的大佬们帮帮小弟吧小弟感激不尽
- IllustratorCS5初学者必读(7):透明度调板
- FFmpeg第一季:小白开窍+九阳神功
- word中表格标题设置重复显示时不成功且表格自动换页问题