月光博客 » 编程开发 » Z-Blog分类标签全站静态化方案

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

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 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

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

    支持(2反对(5回复
  1. 29
    root   说道:
    php可以解释asp???
    支持(17反对(21回复
  1. 30
    V   说道:
    Z-BLOG..... 全是回忆啊, 内牛满面, 到现在我还保持着原来用ZB做个博客程序和数据.
    支持(14反对(19回复
  1. 31
    天空   说道:
    楼主首页根据分类显示缩略图是怎么弄的?能不能教一下
    支持(1反对(8回复
  1. 32
    Menruan   说道:
    以前到处找呢,不错,支持个。
    支持(19反对(27回复

发表留言