青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 互联网社会化之趋势分析(2)论互联网手机的底层风险 »

Z-Blog分类标签全站静态化方案

  Z-Blog目前已经实现了首页和文章页的静态化,可以生成HTML文件,但是系统的分类页、标签Tags页、归档页和作者页都没有实现静态化,本文将讲述一个非常简单的方案,能够自动生成各个分类页、归档页和Tags的静态HTML页面,以便用户将网站迁移到Apache等不支持ASP的主机上。

  Z-Blog的分类页、标签Tags页、归档页和作者页都是调用catalog.asp这个文件,因此,修改这个文件,当用户调用该文件的时候,自动生成针对该页面的HTML文件。如果访客反复读取这个文件,那么在一定时间范围内,可以直接在文件开头使用静态文件,以达到节省系统资源的目的。

  具体的修改方法是,先在根下建立一个目录cat,然后使用编辑器打开Z-Blog根目录下的catalog.asp文件,在文件开头加入如下的代码:

Dim objFSO
Dim objFile
Dim strFileName
Dim strFileTime
Dim isBuildFile
if Request.QueryString("cate")<>"" then
 if Request.QueryString("page")<>""then
  strFileName = "cate" + "_" + Request.QueryString("cate") + "_" + Request.QueryString("page") +".html"
 else
  strFileName = "cate" + "_" + Request.QueryString("cate") + ".html"
 end if
elseif Request.QueryString("tags")<>"" then
 if Request.QueryString("page")<>""then
  strFileName = "tags" + "_" + Request.QueryString("tags") + "_" + Request.QueryString("page") +".html"
 else
  strFileName = "tags" + "_" + Request.QueryString("tags") + ".html"
 end if
elseif Request.QueryString("auth")<>"" then
 if Request.QueryString("page")<>""then
  strFileName = "auth" + "_" + Request.QueryString("auth") + "_" + Request.QueryString("page") +".html"
 else
  strFileName = "auth" + "_" + Request.QueryString("auth") + ".html"
 end if
elseif Request.QueryString("date")<>"" then
 if Request.QueryString("page")<>""then
  strFileName = "date" + "_" + Request.QueryString("date") + "_" + Request.QueryString("page") +".html"
 else
  strFileName = "date" + "_" + Request.QueryString("date") + ".html"
 end if
elseif Request.QueryString("page")<>"" then
 strFileName = "default" + "_" + Request.QueryString("page") +".html"
else
 strFileName = "default_1" + ".html"
end If
isBuildFile = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(Server.MapPath(strFileName)) Then
 Set objFile = objFSO.GetFile(Server.MapPath(strFileName))
 strFileTime = objFile.DateLastModified
 Set objFile = Nothing
 If datediff("h",strFileTime,Now()) > 1 Then
  isBuildFile = True
 Else
  Server.Transfer strFileName
  Response.End
 End If
Else
 isBuildFile = True
End If
Set objFSO = Nothing

  找到 Response.Write ArtList.html 一行,在其后面增加如下代码:

If isBuildFile Then
    ArtList.FileName=strFileName
    ArtList.Directory="cat"
    ArtList.Save
End if

  这样,系统就会自动生成全部动态页面的静态HTML文件,并且在1小时内不会重复生成,期间如果还有调用,则自动载入静态HTML文件,以节省系统资源。

  经过这番处理,Z-Blog的全部分类和Tags就都可以生成静态HTML页面了。

  经过静态化之后,就可以将Z-Blog全站都放在PHP+Apache的主机上了。具体方法是,配置Apache主机,使其用php的方法解析asp,然后编辑catalog.asp这个文件,将其代码修改为如下即可:

if (isset($_GET['cate'])) {
 if (isset($_GET['page'])) {
  $strFileName = "cate_".strip_tags(stripslashes(trim($_GET['cate'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";
 } else {
  $strFileName = "cate_".strip_tags(stripslashes(trim($_GET['cate']))).".html";
 }
} else if (isset($_GET['tags'])) {
 if (isset($_GET['page'])) {
  $strFileName = "tags_".strip_tags(stripslashes(trim($_GET['tags'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";
 } else {
  $strFileName = "tags_".strip_tags(stripslashes(trim($_GET['tags']))).".html";
 }
} else if (isset($_GET['auth'])) {
 if (isset($_GET['page'])) {
  $strFileName = "auth_".strip_tags(stripslashes(trim($_GET['auth'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";
 } else {
  $strFileName = "auth_".strip_tags(stripslashes(trim($_GET['auth']))).".html";
 }
} else if (isset($_GET['date'])) {
 if (isset($_GET['page'])) {
  $strFileName = "date_".strip_tags(stripslashes(trim($_GET['date'])))."_".strip_tags(stripslashes(trim($_GET['page']))).".html";
 } else {
  $strFileName = "date_".strip_tags(stripslashes(trim($_GET['date']))).".html";
 }
} else if (isset($_GET['page'])) {
 $strFileName = "default_".strip_tags(stripslashes(trim($_GET['page']))).".html";
} else {
 $strFileName = "../default.html";
}
define("HTML_FILE",  dirname(__FILE__)."/".$strFileName);
if (file_exists(HTML_FILE)) {
 echo(file_get_contents(HTML_FILE));
 exit(0);
} else {
 exit(0);
}
 

  如果不想用PHP来处理,也可以直接配置.htaccess文件来实现同样的功能,.htaccess文件的内容如下:

RewriteRule ^(.*)/cat/\?cate=(.+)&page=(.+)$ $1/cat/cate_$2_$3\.html
RewriteRule ^(.*)/cat/\?cate=(.+)$ $1/cat/cate_$2\.html
RewriteRule ^(.*)/cat/\?tags=(.+)&page=(.+)$ $1/cat/tags_$2_$3\.html
RewriteRule ^(.*)/cat/\?tags=(.+)$ $1/cat/tags_$2\.html
RewriteRule ^(.*)/cat/\?auth=(.+)&page=(.+)$ $1/cat/auth_$2_$3\.html
RewriteRule ^(.*)/cat/\?auth=(.+)$ $1/cat/auth_$2\.html
RewriteRule ^(.*)/cat/\?date=(.+)&page=(.+)$ $1/cat/date_$2_$3\.html
RewriteRule ^(.*)/cat/\?date=(.+)$ $1/cat/date_$2\.html
RewriteRule ^(.*)/cat/\?page=(.+)$ $1/cat/default_$2\.html



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/3116.html
  • 文章排行:
  • 1.响石潭
  • 这个很实用,试试
    响石潭 于 2012-6-7 23:10:31 回复
    失败,咋回事呢?
    响石潭 于 2012-6-7 23:13:59 回复
    catalog.asp中的

    'plugin node
    For Each sAction_Plugin_Catalog_Begin in Action_Plugin_Catalog_Begin
    If Not IsEmpty(sAction_Plugin_Catalog_Begin) Then Call Execute(sAction_Plugin_Catalog_Begin)
    Next

    之后添加上面那段长代码
  • 2012/6/7 22:53:58   支持(23)反对(16) 回复
  • 2.利杰
  • 静态化多了又影响整体性能,还是选择默认好些
  • 2012/6/11 17:28:16   支持(23)反对(16) 回复
  • 4.飞鸟传播
  • If isBuildFile Then
    ArtList.FileName=strFileName
    ArtList.Directory="cat"
    ArtList.Save
    End if
    这一句我总感觉应该是位置写错了,同事两个 结束判断
    4686794 于 2016/5/14 22:25:30 回复
    哦婆容易一
  • 2012/6/8 8:05:13   支持(18)反对(14) 回复
  • 7.折优聚
  • 折优聚,欢迎访问,对此有详细想解释。
  • 2014/3/22 23:39:20   支持(6)反对(2) 回复
  • 8.游魂
  • 大神很久没写关于z-blog的文章了,这一篇很有用啊,特别是对于那些准备博客出国的人来说
  • 2012/6/8 10:47:28   支持(19)反对(16) 回复
  • 12.led灯笼
  • 挺好的。我可以用的上呀。
  • 2012/6/8 17:32:04   支持(18)反对(16) 回复
  • 14.wxqgrc
  • 实现是实现了,首页的分类栏目需要手动添加调用吗?对于后加的分类首页可否直接调用啊
  • 2012/8/26 18:12:38   支持(8)反对(7) 回复
  • 15.ZBLOG
  • 这代码静态不了,怎么回事,应该没有写对。
  • 2012/9/1 11:52:27   支持(10)反对(9) 回复
  • 16.中山古镇灯饰
  • 不知能不能用,先学习下先yg-anxun
  • 2013/3/20 0:19:01   支持(4)反对(3) 回复
  • 17.屌丝智慧
  • 刚建的站,回头用一下 diaosiiq
  • 2014/5/7 0:40:28   支持(7)反对(6) 回复
  • 19.蒋炳楠的博客
  • 月光博客一直是我们学习的目标,蒋炳楠的博客
  • 2015/10/14 15:08:51   支持(1)反对(0) 回复
  • 20.pangoo盘古电视
  • z-blog后台不是可以设置的么?
  • 2012/6/11 17:42:25   支持(17)反对(17) 回复
  • 23.love梦途
  • 找了好久,总算是找到了 谢谢博主的分享。
  • 2013/7/26 17:05:53   支持(2)反对(2) 回复
  • 24.fasfw
  • 网站怎么好久没更新了goodbyebaidu
  • 2013/12/13 23:48:42   支持(7)反对(7) 回复
  • 25.goodbyebaidu
  • 试下,看一下效果先goodbyebaidu
  • 2013/11/15 16:28:21   支持(6)反对(7) 回复
  • 26.猪娃子
  • 河南生猪价格,河南种猪场,河南养猪网,河南生猪价格走势,河南养猪场,河南猪价网,河南最新生猪价格预测,猪娃子
    zhuwazi
  • 2014/3/5 17:46:16   支持(4)反对(5) 回复
  • 28.潮安济世堂
  • 以前到处找呢,不错,支持个。

  • 2013/8/30 9:36:45   支持(2)反对(5) 回复
  • 30.V
  • Z-BLOG..... 全是回忆啊, 内牛满面, 到现在我还保持着原来用ZB做个博客程序和数据.
  • 2012/6/15 0:16:00   支持(14)反对(19) 回复
  • 31.天空
  • 楼主首页根据分类显示缩略图是怎么弄的?能不能教一下
  • 2014/3/17 10:20:12   支持(1)反对(8) 回复
  • 32.Menruan
  • 以前到处找呢,不错,支持个。
  • 2012/6/8 0:14:02   支持(19)反对(27) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.