本篇文章给大家谈谈静态网站生成,以及静态网站生成工具 精美对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
静态网站
是指HTML结尾的网页,它内容却是从数据库动态获取的,我们静态的目地是方便搜索引擎的爬虫收录!做静态有很多方法,并不一定要啥工具
作者:iwind
原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib
中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS(
iwind
文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。
现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到http://www.devarticles.com/c/b/PHP/
去找找看,对于这个很多地方都有的。另外一个是用ob_函数控制输出。方法如下:先用ob_start();打开输出缓冲器,然后是对数据的分析,操作等等,跟着用ob_get_contents();获取缓冲区的内容,然后再写入文件。根据这个步骤,可以写出以下程序:
?php
ob_start();
//主体部分,数据操作,处理,输出等等。。。
require”global.php”;
mysql_connect(“localhost”,”root”,””);
…..
//获取缓冲区内容
$contents=ob_get_contents();
//如果不想输出任何东西,可以加上这句
ob_end_clean();
//写入目的文件
$fp=@fopen($targetFile,”w+”)
or
die(“打开文件时出错”);
fwrite($fp,$contents);
?
这样就把这个动态页面的内容写入了静态页面,$targetFile.像有的网站首页内容很多,要调用n多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。
你可以看出来,我用ob_只是处理单个页面,对于批量写入或更新多个页面,这个方法就不行了。这就是我要讲的第三种方法,用模板。模板是个好东东,现在大家都或多或少在用它,建议还不会简单模板处理的网友,花点时间去学它,一般的模板处理程序都很简单的。用模板实现静态网页的生成是非常简单的,方法就是获取分析结果,把分析结果写入文件。下面就以PHPlib中的template.inc来谈谈如果用模板生成静态网页。
一,
修改template.inc
加入以下的几个函数:
//将分析结果保存到文件中去
function
savetofile
($dir,$varname){
$data=$this-finish($this-get_var($varname));
$fp=fopen($dir,"w+");
fwrite($fp,$data);
}
//清除已赋值数组
function
renew(){
$this-varkeys=array();
$this-varvals=array();
$this-file=array();
}
第一个函数是结果保存到静态文件中,第二个是把所有的模板分析变量都置为空,以免批量处理时相互影响。
二,实现静态网页生成。
?php
$itpl-set_file(“main”,”mian.tpl”);
//分析模板变量
…..
//分析mainmains
$tpl-parse("mains","main");
//把分析结果mains存入main.html
$tpl-savetofile("main.html","mains");
//置空
$tpl-renew();//至关重要
?
呵呵,是不是很简单,main.html就是我们要的内容。下面是一个结合数据库的例子,并用函数封装了起来。
?php
//$aid是数据库中的文章id,$table是表名称,$template是模板地址,$tpl是template.inc的一个实例
//每一个aid对应一个静态网页地址,都存在一个数据表中
//表的结构类似于
aid
target
title
//
1
a1.html
….
//
2
a2.html
….
//
3
a3.html
….
function
staticInfo($aid){
global
$table,$template,$tpl;
//查询数据库
$res=mysql_query(“select
*
from
$table
where
aid='$aid'”);
//取出数据
$array=mysql_fetch_array($res);
//读静态网页地址,标题。
$target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl-set_file(“main”,$template);
//把模板中的{title}变量换成$title
$itpl-set_var(“title”,$title”);
//分析整个模板
$itpl-set_var(“mains”,”main”);
//把mains写入文件
$tpl-savetofile($target,"mains");
//置空
$tpl-renew();
}
?
这样我们就可以用函数staticInfo()把我们想要处理的任一篇文章都生成静态网页。表$target里也可以包含文章内容,作者,来源等等,方法是一样的。
三,更新静态网页
一篇文章加入数据库后,由于一些原因我们总要修改一些文章。这时候,只要把相应的静态网页重新生成一次即可。这是非常方便的,因为表中已经有了静态网页的目标地址target字段。
可以看出关键所在,一篇文章生成静态网页的关键所在就是$template(模板地址),$target(目标地址)。前者,我们可以先确定,后者可以由你随心所欲的为每篇文章设置一个地址。常用的有1,时间戳
2,时分秒
3,根据文章id。因为这些重复的机会会非常小的。
四,批量生成静态网页.
有了单个文章生成的静态网页的函数了,那么批量生成是非常简单的。就是获取所有的文章aid,然后套入函数即可。
?php
//引用模板类
require”template.inc”;
//引入函数
require”functions.php”;
//一些变量的定义
$table=”art”;
$template=”template/info.tpl”;
$tpl=new
Template(“.”);
//连接mysql,选择数据库
mysql_connect(“localhost”,”root',””);
mysql_select_db(“article”);
//发送查询语句
$res=mysql_query(“select
aid
from
$table”);
while($r=mysql_fetch_array($res)){
$aid=$r[“aid”];
//生成静态网页
staticInfo($aid);
}
//结束
echo”所有静态网页更新/生成成功”;
?
上面就是完整的例子。我们做cms的流程可以如下:
1,记者发稿(把稿件内容放入数据库)
2,编辑审查(如果他认为可以发布,那么就可以把这些内容生成静态网页)
3,退回稿件(把生成的静态网页删除,把数据库中的内容删除)
然后,我们访问到的网站内容就都是静态的了。一个问题就是,这种方法会不会占用很多空间内?http://www.knowsky.com
有上千篇文章了,只占用了20M空间。反过来说,如果你有10000篇文章的话,你不会吝啬到只买200M的空间吧?
或许你对生成静态的文章列表感到困惑,其实方法是一样的,就是
计算页码
分析每个页码的内容
写入文件。
分析每个页码的内容,当然是写个函数咯,如果你一页一页的生成,恐怕被人嘲笑
^_^。
静态网页不仅仅是可以减轻服务器负担,提高访问速度,也可以方便地做镜像网站,方便地备份,减少被攻击损失程度,加快还原速度。当然静态网页也会给大家带来诸多不便的地方,你需要在动态和静态之间做出平衡,也可以在静态网页中加入js调用的php代码,来达到计数,即时更新等目的。(完)
看看例子吧
-------------------------------------------
下面的例子是将、index.asp?id=1/index.asp?id=2/index.asp?id=3/这三个动态页面,分别生成ndex1.htm,index2.htm,index3.htm存在根目录下面:
%
dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
Html_Temp="UL"
For i=1 To 3
Html_Temp = Html_Temp"LI"
Item_Classid = i
FileName = "Index"Item_Classid".htm"
FilePath = Server.MapPath("/")"\"FileName
Html_Temp = Html_TempFilePath"/LI"
Do_Url = "http://"
Do_Url = Do_UrlRequest.ServerVariables("SERVER_NAME")"/main/index.asp"
Do_Url = Do_Url"?Item_Classid="Item_Classid
strUrl = Do_Url
dim objXmlHttp
set objXmlHttp = Server.CreateObject(" Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
Dim binFileData
binFileData = objXmlHttp.responseBody
Dim objAdoStream
set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()
Next
Html_Temp = Html_Temp"UL"
%
%
Response.Write ( "成功生成文件:" )
Response.Write ( "BR" )
Response.Write Html_Temp
%
在php中实现动转静生成纯静态页面的方法不管用什么方法,原理都是一样的。就是用程序读取相应的数据来替换模版中的变量,然后生成静态页。php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模版中改变的部 位。推荐的方法是直接把原来生成的模版砍掉,重新生成,呵呵,真正的一了百了。 还需要说明的一点就是,这种生成静态页面的方法一般都用于那些变化不是很频繁的页面,比如信息的最终页面。而针对列表页,如果信息更新不是很频繁的 话,也是可取的。现在网上流行好多可以生成静态页面的blog或者论坛程序,都是通过手动点击后台“生成html页”的按钮来“半自动”生成html的。 而对一些信息量非常大的门户网站,则行不通。因为静态页之所以叫“静态”,是因为其不可自动改变。如果信息列表每天更新100次,那么静态的列表页就要重 新生成100次。如果我有10个这样的栏目,那想想也够吐血的了。(天津众维UI培训学校提供)
生成HTML方法主要步骤只有两个:
一、获取要生成的html文件的内容
二、将获取的html文件内容保存为html文件
目前常用获取html文件的内容的方法有以下几种:
1、
str="html标记内容/html标记"
str=str"html标记内容/html标记html标记数据库读取内容..../html标记....."
这种方法与是在脚本内写要生成的html内容,不太方便预览生成页面的内容,无法可视化布局页面,更改html模板时会更加复杂。
用这种方法的人很多,但我感觉这种方法是最不方便的。
2、 制作单独的HTML模板页,动态的内容用特定的字符作为标记(如:有人用$title$标记为网页标题),用ADODB.Stream或者Scripting.FileSystemObject将其模板内容载入,然后再用替换方法把原先定好的标记替换为动态内容
如:
Replace(载入的模板内容,"$title$",rs("title" ) )
3、 用XMLHTTP或serverXMLHTTP获取动态页所显示的HTML内容,
方法一:使用现成的插件,比如:ISAPI_Rewrite、IIS Rewrite、Apache
HTTP服务器的mod_rewrite等,它们都是基于正则表达式解析器开发的重写引擎。它们的使用方法查看它们自带的帮助即可。
方法二:自己写的代码实现动态网页静态化,方法也有好几种:
1、创建FSO对象,利用此对象将所需的内容动态创建到文件中生成HTML页面;
2、利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值 生成HTML文件;
3、使用Server.Transfer转换技术,
方法三:使用HttpWebRequest请求客户端的方式,获取返回资源,生成静态页面。一般这样只需要获取网页内容即可,其它资源可放置在服务器上,自动加载。(注:此方法缺点明显,需要大量更改匹配URL,建议慎用)
方法四:在asp中有IhttpModule接口。Ihttpmodule可以简单理解为一个可以在执行像.aspx,或者mvc中control/action前,添加我们自定义的操作的东西。
我们只需要编写这么一个HttpModule就可以了,当用户第一次请求asp处理时,我们可以在ihttpmodule中拦截到这个请求,然后获取到这次请求应该返回的html代码,然后我们返回这些html给用户,并保存刚才我们获取到的html到文件内,当用户下次请求时,我们只需要直接返回我们已经保存的html文件即可
如果是合格的phpcms模板本身就是带标题的。 你打开pc原模板的header.html,把title的代码复制到你的模板就行了。
运行CMD后使用dir命令,加一个/b,会生成一个简单的文件名列表,不包括其它信息,这种方法可以用来提取文件夹和文件名列表。比如要提取D盘下ABC文件夹里的文件名列表:dir d:\abc /s /b d:filelist.txt这样就会在D盘生成一个filelist.txt的文本...
先在扩展里面设置URL规则, 然后在栏目设置里面设置 这些都可以根据需求设置
首页第一步你要编辑自己的静态规则,如果对系统自带的满意的话可以忽略。 即找到扩展——URL规则管理,再修改相应的生成静态规则的规则,如果不想在原有的基础上修改,可以自己添加,这个很简单,生成什么样的目录你自己说了算,看示例就会 了。 ...
你好! 手机门户没有生成静态页面一说的,应该是php写的动态页面。 现在都是html5的时代了,建议开发html5响应式网站,兼顾PC、平板、移动显示效果。 希望我的回答能够帮到你,望采纳
我来回答吧:) 1. 进入后台--网站频道 2.到这个时候,你网站的所有频道都会在"右窗口"显示出来. 3.找到你需要修改的频道,点击其右侧管理操作的"修改"链接... 4.转入的这个页面就是此频道的详细信息,分别有"基本信息"."权限设置"."上传选项"."生成...
你好! 生成了很多多余的目录可能跟你的内容页URL规则设置有关系。如图: 个人觉得phpcms生成静态文件是多余的,完全可以用伪静态来实现。易于维护和管理,实现也较容易。 希望我的答案对你有所帮助,记得采纳哦~
更新URL更新缓存这是phpcms使用问题的万能药膏,我问了很多不同的问题,都是这样的回答,并且都不能解决问题
后台-内容-内容管理-栏目管理-选择某个栏目-修改-生产html选项 勾完以后更新一下栏目缓存
两个都可以访问的,生成静态后,访问的静态地址页面,服务器就不会去执行数据库; 比如,你有10篇文章,动态的话,你每访问一篇文章都要在数据库里去找出这张篇文章,而静态的话,10篇文章就是10个静态页面,不用查找数据库,直接显示的。 这样...如果还有不明白的话,你也可以去后盾人平台看看php基础教学视频看看,也是不错的选择,希望能帮到你,给个采纳吧谢谢(^_^)
静态网站生成的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于静态网站生成工具 精美、静态网站生成的信息别忘了在本站进行查找喔。
本篇文章给大家谈谈怎样克隆别人的网站,以及如何克隆网站对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、如果复制别人的网站? 2、怎样克隆别人的网站? 3、怎么复制别...
本篇文章给大家谈谈sentos上部署.net网站,以及linux部署netcore对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、如何在Linux服务器上部署.Net Co...
本篇文章给大家谈谈搬瓦工vps特惠,以及搬瓦工VPS对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、BandwagonHost便宜VPS怎么样 2、性价比高的美国VPS...
本篇文章给大家谈谈hs服务器,以及服务器的hs编码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 文章目录列表: 1、美国服务器 2、刀片服务器hs21上如何驱动安装驱动程序 3、国外...
本篇文章给大家谈谈南京著名网站制作,以及南京高端网站制作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、南京有哪几家网页制作公司? 2、南京网站制作公司哪家好 3、...
本篇文章给大家谈谈织梦网站,以及织梦网站侵权责任纠纷严重吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文导读目录: 1、用织梦做的网站怎样看 2、织梦网站怎么完整下载源码 3、织...
本篇文章给大家谈谈福田区网站建,以及福田区网站建设公司对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 文章目录列表: 1、深圳福田网站建设公司卓炎建站怎么样? 2、不二网建站:深圳建网站流...
今天给各位分享郑州知名做网站公司的知识,其中也会对郑州知名做网站公司排名进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!文章目录列表: 1、郑州网站建设排名比较好的公司有哪些...