目前网络上好多网站的新闻发布系统都采用了动态服务器技术生成静态HTML的做法,这样做的好处是:一是能减轻其服务器的负担,二是因为生成了HTML静态页面,所以其网站被搜索引擎搜索到的机率更大一些。因此,在这里,想简单地谈一下这种做法的思路。这篇文章适合于对PHP+MYSQL数据库操作,SQL语句以及网页设计有点基础的朋友,如果您是一个从头开始学的朋友,那么请先打好基础吧!到这里就不用往下看了。如果您都符合上述条件的话,那么恭喜您,请接着往下看。但是,在具体动手构建之前,您还要做好以下几点准备工作。
静态化分真静态(2#)和伪静态(3#),下面分别介绍。
真静态实现
(1)在MYSQL里新建一数据库,命名为 database (可自定义),新建一表,命名为 news(因为是新闻发布嘛,取个好记的名字即可,可自定
义),然后建立这几个字段名:
id (自动递增,这是关键,类型:INT)
title (顾名思义,新闻标题,类型可取 TEXT)
content (新闻内容,类型可取 TEXT)
path (HTML文件路径,类型可取 TEXT)
(2)建立 conn.php
这是连接数据库的PHP文件,你可以把连接数据的语句单独放在这一文件里,以后多个需要连接数据库的文件直接引用这个文件即可。
(3)设计添加新闻的表格 add.form 简单的源代码如下:
<form method=”post” action=”add.php”> //提交至 add.php
新闻标题:<input type=”text” name=”title” size=”20”><br>
新闻内容:<textarea name=”content” cols=”10” rows=”25”></textarea><br>
<input type=”submit” name=”提交”>
</form>
(4)建立一个 HTML 的模板,另存为model.htm,和 add.php可以在同一目录下。
示例源代码:
<html>
<body>
此新闻的标题:{title}
此新闻的内容:{content}
</body>
</html>
{ }大括号内的内容即是要被替换的内容,整个静态模板的设计可以根据自己的思路,但{ }内被替换的内容必须包含在内,如上面的{title},
{content};咔咔~简单地说,设计好一个很好看的新闻模板后,把要被替换的如{title},{content}等标记放到需要的地方就可以了撒。
(5)详解 add.php 源码
<?php
require_once("conn.php"); //引用conn.php,连接数据库
$title=$_POST["title"];
$content=$_POST["content"]; //获得表单变量
//以下建立一文本文档,其值自动计数
$countfile="count.txt";
if(!file_exists($countfile))
{
fopen($countfile,"w"); //如果此文件不存在,则自动建立一个
}
$fp=fopen($countfile,"r");
$num=fgets($fp,20);
$num=$num+1; //每次其值自动加一
fclose($fp);
$fp=fopen($countfile,"w");
fwrite($fp,$num); //更新其值
fclose($fp);
//利用上面自动计数的值获得HTML的路径$path
$houzui=”.html”;
$path=$num.$houzui;
//这样形成的路径是自动增长的,如1.html,2.html,3.html……….添加一条新闻便自动加上1
//以下用SQL语句添加数据至表 news
$sql=”insert into news (title,content,path) values (‘”.$title.”’,’”.$content.”’,’”.$path.”’)”;
$query=mysql_query($sql);
//以下为关键之处,把从表单获得的数据替换模板中的{title},{content}标记
$fp=fopen("model.htm","r"); //只读打开模板
$str=fread($fp,filesize("mode.htm"));//读取模板中内容
$str=str_replace("{title}",$title,$str);
$str=str_replace("{content}",$content,$str);//替换内容
fclose($fp);
$handle=fopen($path,"w"); //写入方式打开新闻路径
fwrite($handle,$str); //把刚才替换的内容写进生成的HTML文件
fclose($handle);
//收尾工作:
echo "<a href=$path target=_blank>查看刚才添加的新闻</a>";
?>
OK,整个生成HTML的示例源码就到这里,其关键是用了替换的方法。
$str=str_replace("{被替换的内容}",$替换的内容,$str);
因此,总结一下以上的做法:先设计好新闻模板,把需要被替换的内容用{ }放到模板中相应的位置,然后设计表单,再是最后的表单处理程序
,把从表单中获取的变量替换模板中相应的内容即可,这样每次都会生成不同的HTML;如果需要修改HTML的内容也是一样的,获得修改后的表
单内容后,先用 update 语句更新数据库,再重新替换一下模板中的内容即可;删除的话,先delete表中要删除的内容,再用unlink($path)
来删除HTML的物理文件即可。本文讲的只是最简单的思路而已,要投入使用还有待完善。
伪静态实现
比如这个网页
http://www.*.net/soft.php/1,100,8630.html
其实处理的脚本是soft.php 参数为1,100,8630
相当于soft.php?a=1&b=100&c=8630 只不过这样的URL太难记。搜索引擎也不喜欢。
真静态只是完全生成了HTML。
客户端访问的时候直接输出。不用脚本解释。在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果。也就是说服务器端实实在在的存在这个HTML页面。
当然在你网站的流量没有那么大的时候。URL重写是最好的方法(个人观点,大流量的时候可以考虑负载均衡了。同样没有关系)
附URL重写的方法有很多种,APACHE,IISREWRITE。甚至PHP脚本都可以直接处理。比如上例中就是PHP脚本直接处理(该方法好处是大流量的时候直接减轻WEB伺服器的压力。PS:同样也是个人观点:
================================================
下面以程序为例讲一下PHP伪静态的程序实现方法
程序为例:
http://www.*.net/soft.php/1,100,8630.html
<?php
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分
if(@$path_info =$_SERVER["PATH_INFO"]){
//正则匹配一下参数
if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){
$gid =intval($arr_path[1]); //取得值 1
$sid =intval($arr_path[2]); //取得值100
$softid =intval($arr_path[3]); //取得值8630
}else die("Path:Error!");
//相当于soft.php?gid=1&sid=100&softid=8630
}else die('Path:Nothing!');
//就是这么简单了。~)
?>
真静态和伪静态的优缺点
html静态页(真静态)的好处有三点;一是减少服务器对数据响应的负荷,二是加载不用调动数据库,响应速度快。三是便于化化引擎。
缺点也有三点:一是维护不方便,每次都要手动生成。三是空间占用比较大。三是生成的文件多了,服务器对html文件的响应负担也较重。
url重写(伪静态)的好处:一,可以方便的实现对化化引擎的优化,并且比生成静态更加方便。二、占空间比较小。三、首页每天都自动变化,不用维护。网站首页一般都有热点排行之类的,你可以设为,24小时排行,一周排行,再加上最新文章,最新点评等。这样首页天天是有变化的。四,便于广告的轮显。比如:你可以把art1234.aspx,这个虚成n个页,如art_1234.aspx,news_1234.aspx,top_1234.aspx,在不同的页面放不同的广告.总之是动态的,你就可以随意动。
url重写的缺点:我看只有一个,那就是效率不如生成html的,因为它不是真正意义上的静态页,每次请求是要读取数据库的。但你可以用缓存技术来补偿一下。
分享到:
相关推荐
伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪...静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态伪静态
综上所述,伪静态与真静态各有优劣。选择哪种方式取决于网站的具体需求和资源条件。对于SEO敏感度高且希望保持较高用户体验的网站,建议使用伪静态;而对于内容更新频率较低、对SEO要求不高的站点,则可以考虑使用真...
全站静态与伪静态是两种常见的优化网站性能的技术,尤其对于大型网站或门户网站来说,这些技术对于提升用户体验和搜索引擎优化(SEO)至关重要。 全站静态是指将原本由PHP等动态语言生成的页面转换为HTML静态文件,...
下面,我们将深入探讨“伪静态”及其配置,以及与之相关的控制组件。 伪静态的主要目标是改善搜索引擎爬虫对网站的抓取效率,因为静态URL通常被认为更易于理解。静态URL是指不包含任何动态参数(如问号 "?" 和 "&...
伪静态技术是Web开发中的一种常见优化手段,主要用于将动态网页的URL转化为静态网页的URL形式,以提高网站的搜索引擎友好性(SEO)和用户体验。在这个压缩包中,可能包含了实现伪静态功能的源代码,适合需要进行这...
在构建网站时,为了优化搜索引擎优化(SEO)和提高用户体验,伪静态技术是一个常见的选择。本文将详细探讨“伪静态插件”以及如何在ASP环境下实现伪静态,并提供关于个性化后缀和网站后缀修改的一些建议。 首先,...
6. **测试与验证**:在上传`.htaccess`文件后,需要进行测试以确保伪静态配置正常工作。访问论坛的不同页面,检查URL是否已经转化为静态形式,同时观察页面是否能正常加载,无404错误。 7. **注意事项**:在启用伪...
综合考虑,对于SEO优化,真静态和伪静态的效果相近,但真静态对硬盘的损伤和维护成本较高,而伪静态虽然占用一定的CPU资源,但相对更节省硬盘空间。因此,大多数情况下,尤其是对于大型网站,选择伪静态是更为实际和...
网页静态化和伪静态页面是ASP.NET开发中提高网站性能和搜索引擎优化(SEO)的重要技术。在现代Web开发中,动态网页虽然功能强大,但在处理大量用户请求时,可能会增加服务器负担,降低页面加载速度。为了解决这个...
php伪静态,php伪静态php伪静态php伪静态php伪静态php伪静态
为了提高效率和用户体验,人们提出了页面静态化和伪静态化技术。 **页面静态化**是指将动态生成的HTML页面保存为静态文件,之后的用户请求不再通过服务器动态生成,而是直接读取这些静态文件,从而减轻服务器负担,...
1. **兼容性**:确保配置的伪静态规则与服务器环境兼容,如Apache的mod_rewrite或Nginx的rewrite模块。 2. **避免循环重定向**:配置规则时要小心,避免产生无限重定向的循环。 3. **缓存问题**:修改规则后,可能...
ISAPI_Rewrite,ISAPI_Rewrite用来实现伪静态,将动态网页通过重写URL的方法实现去掉动态网页的参数!它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS )。 IIS配置相当简单,配置好之后就有...
【伪静态注入中转突破伪静态】是一种网络安全技术,用于在动态网站中模拟静态页面,以提高搜索引擎优化和用户体验。然而,这种技术也带来了一定的安全隐患,因为伪静态URL结构使得传统SQL注入攻击手段变得更为复杂。...
文件`ActionlessForm.dll`可能是一个与表单提交相关的动态链接库,可能在处理伪静态分页的后端逻辑中发挥作用,例如处理无动作(actionless)的表单提交,即通过URL参数传递表单数据。而`伪静态分页解决路径问题.txt...
在Java Web开发中,"伪静态"是一种技术手段,它主要用来解决动态URL对搜索引擎不友好,以及提高网站性能的问题。动态URL往往包含各种参数,而静态URL则更易于理解和爬取。伪静态就是将动态页面通过技术手段转换成...
asp.net伪静态 网站伪静态 全站伪静态
在网站优化和搜索引擎友好性方面,伪静态技术扮演着重要的角色。它将动态网页的URL转化为看似静态的页面链接,从而提升用户体验并有利于SEO。本文将深入探讨伪静态配置的相关知识,包括其原理、作用以及如何进行配置...
帝国cms自定义伪静态插件