我的静态化解决办法 [技术论坛 - 效率优化] imag1

正在浏览:   1 名游客




(1) 2 3 »


我的静态化解决办法
中级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 44 | 精华: 3
等级: 5; EXP: 43
HP: 0 / 110
MP: 14 / 444
离线
在学Xoops之初就想对网页做静态化了——可能自己对浏览效率有些苛求吧。

解决的基本原理是这样的:因为大多数情况下,一个页面对应一个唯一的 URL,所以其实只要把这个 URL 变成一个静态页文件名,保存该 URL 动态页的内容,通过某种方式访问即可了。

写的小程序包含很少几个文件:其中主要的两个一个是显示静态页的转接程序 htmlshow.php,只要在其后附上“?/path/file.php?id=21”之类的动态 URL 路径,就可以访问该动态 URL 对应的静态页了;另一个是维护静态页的更新程序 htmlupdate.php(使用说明在文档/文件中都十分详细)。

另外有一个配置文件 html_config.php,用于静态页的维护,里面主要列出需要静态化的动态页的 URL。这里有一个重要的做法,就是 URL 列表维护的方式。我采用了两种方式(因为有了第二种方式才使得该方案切实可行),一种是单页列表,一种是列表页列表。

单页列表中的 URL 就是直接需要静态化的页面,如首页,不需要指定太多;列表页列表中包含的是“包含了静态化链接”的父页面,即它相当于一个包含了需要维护的 URL 的目录页——它本身是不会被静态化的(当然如果需要,可以在单页列表中指定它)。此处的“静态化链接”即指如前添加了转接程序的链接(如:href="/htmlshow.php?/modules/article/index.php")。

另外一个 html_index.php 文件是处理用户直接输入首页地址访问时,不存在 htmlshow.php? 前缀的情况下仍然能静态化访问的脚本。(需要修改原始首页文件——加一行代码即可)。

最后还有 html_common.php html_update.log html_readme.txt 三个文件,分别为公用函数、更新日志和说明。

这里只是简单的说明一下,源文件中都有详细的说明,如果在使用中您发现有什么bug,请不吝通知偶一声,谢谢!

=============================================================
另外也特别说明一下,这个方法其实适用于所有类型的 CMS 系统,只要它允许修改目标链接(采用模板技术就最方便了)。

附件:


rar staticHTML.rar 大小: 8.31 KB; 下载次数: 426

2007/2/14 18:06
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2005/12/1 9:15
来自 GZ.CN
所属群组:
注册会员
Dev+Hack
帖子: 261 | 精华: 2
等级: 15; EXP: 11
HP: 0 / 352
MP: 87 / 2277
离线
思路不错!

有一个问题需要再考虑下去:
被静态化的内容(区块、正文内容)涉及到其它页面的链接是否在静态化的过程中也自动转译成指向静态页的URL?

2007/2/15 0:40
_________________
我是一只虾
热爱PHP!钟意XOOPS!支持Smarty、adodb、PEAR...

xEasy, spread your dream, everything become easy!
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 882 | 精华: 5
等级: 26; EXP: 55
HP: 127 / 638
MP: 294 / 3066
离线
引文:

Tubz 写道:
在学Xoops之初就想对网页做静态化了——可能自己对浏览效率有些苛求吧。

解决的基本原理是这样的:因为大多数情况下,一个页面对应一个唯一的 URL,所以其实只要把这个 URL 变成一个静态页文件名,保存该 URL 动态页的内容,通过某种方式访问即可了。

写的小程序包含很少几个文件:其中主要的两个一个是显示静态页的转接程序 htmlshow.php,只要在其后附上“?/path/file.php?id=21”之类的动态 URL 路径,就可以访问该动态 URL 对应的静态页了;另一个是维护静态页的更新程序 htmlupdate.php(使用说明在文档/文件中都十分详细)。

另外有一个配置文件 html_config.php,用于静态页的维护,里面主要列出需要静态化的动态页的 URL。这里有一个重要的做法,就是 URL 列表维护的方式。我采用了两种方式(因为有了第二种方式才使得该方案切实可行),一种是单页列表,一种是列表页列表。

单页列表中的 URL 就是直接需要静态化的页面,如首页,不需要指定太多;列表页列表中包含的是“包含了静态化链接”的父页面,即它相当于一个包含了需要维护的 URL 的目录页——它本身是不会被静态化的(当然如果需要,可以在单页列表中指定它)。此处的“静态化链接”即指如前添加了转接程序的链接(如:href="/htmlshow.php?/modules/article/index.php")。

另外一个 html_index.php 文件是处理用户直接输入首页地址访问时,不存在 htmlshow.php? 前缀的情况下仍然能静态化访问的脚本。(需要修改原始首页文件——加一行代码即可)。

最后还有 html_common.php html_update.log html_readme.txt 三个文件,分别为公用函数、更新日志和说明。

这里只是简单的说明一下,源文件中都有详细的说明,如果在使用中您发现有什么bug,请不吝通知偶一声,谢谢!

=============================================================
另外也特别说明一下,这个方法其实适用于所有类型的 CMS 系统,只要它允许修改目标链接(采用模板技术就最方便了)。

可以用apache的URLRewrite,或者在apache的前端再放置一个cache服务器。

2007/2/15 3:31
_________________
Skype: huzhenghui
QQ: 443089607
QQ Mail: [email protected]
GTalk: huzhengh
GMail: [email protected]
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
中级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 44 | 精华: 3
等级: 5; EXP: 43
HP: 0 / 110
MP: 14 / 444
离线
引文:

scottlai 写道:
思路不错!

有一个问题需要再考虑下去:
被静态化的内容(区块、正文内容)涉及到其它页面的链接是否在静态化的过程中也自动转译成指向静态页的URL?


不会被自动转换。一是为了最大限度考虑性能,一是太多的自动化可能并不是用户想要的。

只有用户实际指定哪些链接需要静态化,程序才会去做处理。


另外补充一下简单的使用说明:

1、将压缩包中的几个文件解压到网站根目录。
2、编辑修改(模板中)你想静态化处理的链接。
3、在html_config.php中指定静态化文件及列表页。
4、执行htmlupdate.php进行维护(admin:admin888)。
5、正常使用。。。

2007/2/15 9:58
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
网站管理员
注册日期:
2004/6/25 19:16
所属群组:
网站管理员
注册会员
Dev+Hack
帖子: 5882 | 精华: 11
等级: 54; EXP: 56
HP: 1071 / 1339
MP: 1960 / 14247
离线
我在考虑做一个通用的rewrite控制器,不知各位有没有做过

2007/2/15 10:04
_________________
XOOPS Project -- |自由|开源|共享|
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
中级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 44 | 精华: 3
等级: 5; EXP: 43
HP: 0 / 110
MP: 14 / 444
离线
这个方法其实是透明的,唯一能看出它是静态页的标志只有页面的 URL 地址(有“/htmlshow.php?”前缀)。

这里有个想法,如果DJ老大认为这个方法可行(该方法本身很简单——可能是太简单了),能把它转化到 Xoops 的系统核心中去,使得输出到模板中的 URL 其实就是静态页本身的地址,那这样就对搜索引擎很优化了(目前 Article 模块中输出到模板的链接好像有些复杂,感觉其实直接输出一个现成了URL就可以了) *_^.

2007/2/15 10:14
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 882 | 精华: 5
等级: 26; EXP: 55
HP: 127 / 638
MP: 294 / 3066
离线
引文:

Tubz 写道:
这个方法其实是透明的,唯一能看出它是静态页的标志只有页面的 URL 地址(有“/htmlshow.php?”前缀)。

这里有个想法,如果DJ老大认为这个方法可行(该方法本身很简单——可能是太简单了),能把它转化到 Xoops 的系统核心中去,使得输出到模板中的 URL 其实就是静态页本身的地址,那这样就对搜索引擎很优化了(目前 Article 模块中输出到模板的链接好像有些复杂,感觉其实直接输出一个现成了URL就可以了) *_^.

你认为/htmlshow.php?/modules/article/index.php是静态化的链接么?

2007/2/15 10:28
_________________
Skype: huzhenghui
QQ: 443089607
QQ Mail: [email protected]
GTalk: huzhengh
GMail: [email protected]
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 882 | 精华: 5
等级: 26; EXP: 55
HP: 127 / 638
MP: 294 / 3066
离线
引文:

D.J. 写道:
我在考虑做一个通用的rewrite控制器,不知各位有没有做过

实验过,后来觉得这个功能还是靠前端的缓存服务器工作有些意义。如果要做的话,最好是改成mediawiki样式的index.php/引导全部页面。

2007/2/15 10:32
_________________
Skype: huzhenghui
QQ: 443089607
QQ Mail: [email protected]
GTalk: huzhengh
GMail: [email protected]
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
中级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 44 | 精华: 3
等级: 5; EXP: 43
HP: 0 / 110
MP: 14 / 444
离线
引文:

胡争辉 写道:
引文:

Tubz 写道:
这个方法其实是透明的,唯一能看出它是静态页的标志只有页面的 URL 地址(有“/htmlshow.php?”前缀)。

这里有个想法,如果DJ老大认为这个方法可行(该方法本身很简单——可能是太简单了),能把它转化到 Xoops 的系统核心中去,使得输出到模板中的 URL 其实就是静态页本身的地址,那这样就对搜索引擎很优化了(目前 Article 模块中输出到模板的链接好像有些复杂,感觉其实直接输出一个现成了URL就可以了) *_^.

你认为/htmlshow.php?/modules/article/index.php是静态化的链接么?


不会吧?不然干吗希望能有核心的支持?
这个疑问.......容易让人觉得...个啥

其实不该回复这个回复的,但为了不混淆视听。。。还是姑且说上一句
止。

2007/2/15 10:41
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 882 | 精华: 5
等级: 26; EXP: 55
HP: 127 / 638
MP: 294 / 3066
离线
引文:

Tubz 写道:
不会吧?不然干吗希望能有核心的支持?
这个疑问.......容易让人觉得...个啥

其实不该回复这个回复的,但为了不混淆视听。。。还是姑且说上一句
止。

我就是没看懂究竟实现了什么功能,能举个例子么?

2007/2/15 10:44
_________________
Skype: huzhenghui
QQ: 443089607
QQ Mail: [email protected]
GTalk: huzhengh
GMail: [email protected]
工具箱 短消息 Email PDF 书签 打印 举报 回顶部





可以查看帖子。
不可发帖。
不可回复。
不可编辑自己的帖子。
不可删除自己的帖子。
不可发起投票调查。
不可在投票调查中投票。
不可上传附件。
不可不经审核直接发帖。
不可使用主题类别。
不可以使用HTML语法。
不可以使用签名档。

[高级搜索]