静态页转换平台(StaticPol)-静态页生成终极解决方案

news/2024/7/4 9:11:50
 我本身非常不喜欢写文字材料,但是这个东西相信是很多人都需要的,把心得写出来和大家分享一下,也好让大家都努力PP,以助于尽快完善这个东东,早日贴出来供大家下载使用。

    为什么要生成静态页?
这个问题咱们就不多说了,他的优点只有一个,大大提高网站性能,对于数据量大、访问量大的网站不采用静态页输出的解决方案,恐怕真受不了了。缺点就不说了,一大堆...。不过单这一个优点就值得我们研究一番。下面咱们讨论一下静态页生成方案的常规处理方式和 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/ (海天人) 就是采用的这个方案。大家可以去看看这个演示。

转载于:https://www.cnblogs.com/aaa6818162/archive/2009/08/07/1541030.html


http://www.niftyadmin.cn/n/3613235.html

相关文章

五线电阻触摸屏的工作原理

在触摸屏的四个端点RT&#xff0c;RB&#xff0c;LT&#xff0c;LB四个顶点&#xff0c;均加入一个均匀电场&#xff0c;使其下层&#xff08;氧化铟&#xff09;ITO GLASS上布满一个均匀电压&#xff0c;上层为收接讯号装置&#xff0c;当笔或手指按压外表上任一点时&#xff…

jQuery学习笔记:Ajax(二)

接上篇“jQuery学习笔记&#xff1a;Ajax(一)”。3、jQuery.get(url,[data],[callback],[type])通过远程 HTTP GET 请求载入信息。这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数&#xff0c;请使用 $.ajax。返回值 XML…

四线电阻触摸屏与五线电阻触摸屏的区别和技术比较

项目 OneTouch -4W四线电阻 OneTouch -5W五线电阻 物理结构 1、屏幕的最底层为一般玻璃板 2、玻璃上有两层 ITO Film&#xff0c;上层用以读取y轴电压值&#xff0c;下层用以读取x轴电压值&#xff0c;两层film紧密靠在一起&#xff0c;镀有ITO的面相对&a…

LED和LCD的区别

LED是发光二极管Light Emitting Diode的英文缩写。 LED应用可分为两大类&#xff1a;一是LED单管应用&#xff0c;包括背光源LED&#xff0c;红外线LED等&#xff1b;另外就是LED显示屏&#xff0c;目前&#xff0c;中国在LED基础材料制造方面与国际还存在着一定的差距&#xf…

MacOS配置新安装的Python环境变量

MacOS配置新安装的Python环境变量官网下载.pkg默认安装配置环境1. 打开终端2. 输入命令3. 编辑.bash_profile文件4. 配置环境变量5. 检查Python版本使用总结官网下载.pkg默认安装 在python官网中下载需要的.pkg包&#xff0c;默认安装即可&#xff08;3.9版本为例&#xff09;…

LCD液晶屏的分类知识

摘要&#xff1a;介绍LCD的分类、选型、背光及一些指标&#xff0c;详细讨论触屏的类别和具体实现。关键词&#xff1a;LCD&#xff1b;触摸屏 一、概述 液晶的发现可追溯到19世纪末&#xff0c;1888年被奥地利植物学家发现。它是一种在一定温度范围内呈现既不同于固态、液态…

电阻和电容式触摸屏区别

电容式摸摸屏与传统的电阻式触摸屏有很大区别。电阻式触控屏幕在工作时每次只能判断一个触控点&#xff0c;如果触控点在两个以上&#xff0c;就不能做出正确的判断了&#xff0c;所以电阻式触摸屏仅适用于点击、拖拽等一些简单动作的判断。而电容式触摸屏的多点触控&#xff0…

JQuery 专题

原创&#xff1a;JQuery $ 应用手记 JQuery CSS 基本选择器 详解 JQuery 位置选择器 详解JQuery -- this 和 $(this) 的区别JQuery 自定义选择器 详解 JQuery CheckBoxListJQuery RadioButtonList JQuery-Map 转载JQuery 性能文章 JQuery Layout 1000个jquery极品插件 在JQu…