很多互联网应用都提供了模板和生成静态网页功能,提高了网站访问速度及可配置化程度。
1.模板
相对于PHP,Asp模板的实现比较单一,最简单的是纯替换,用动态数据替换模板页中的标记。一般用FSO或ADODB.Stream读入模板页进行解析。主要有两种解析方法,一种是将模板分成块,包括文本块和标记块,对标记块进行替换,比如asptemplate类,VBSTemplate。另一种方法是使用基于对象的方法,将整个模板文件解析为节点树,从根节点开始遍历树,根据节点名称调用相应的处理模块,最据有代表意义的是KudzuASP(也可以去www.ifree2008.com下载修改版的,扩展了一些功能),它实现了几个标准模块,比如if...else,循环结构等,你也可以自己写一些扩展模块,然后注册到引擎,就能解析自定义标记了,比较容易模块化。
如果可能的话,可以使用PHP,模板实现方法比较灵活,并且有很多免费的模板引擎可以使用,比如使用比较多的smarty.除了上述两种实现方法,由于PHP支持动态include,可以对模板进行预编译,生成.php文件
2.静态化
静态页的处理速度是最快的,Web服务器直接读取该文件即可,如果用.shtml的话,还可以处理包含。Asp中可以用fso或adodb.stream将解析结果保存为静态页。PHP本身提供了丰富的IO操作函数,输出过程大致如下
ob_start(); /打开输出缓冲区
include("预编译后的.php文件");
str = ob_get_contents();
ob_end_clean();
然后将str内容保存为.html或shtml.
有一个问题是,对于经常更新的内容静态化问题,比如最新列表。需要频繁更新包含这些列表的html页面,通常的解决方法是,对于常用的模块生成.js文件,在html文件中用<script src='latestnews12.js'></script>就可以输出类别id为12的最新新闻列表,如果更新了这个类的内容,在后台只要刷新相关js模块就可以了。
现在有很多开源的PHP系统,比如帝国CMS,DeDeCMS,UCenter Home, 读一读别人的源码,收获还是不少的。