网站优化处理(1)
网站优化处理
网站建成之后,对网站性能的评价将成为了一个重要任务,网站必须达到预先设计的性能,而且尽可能以更高的效率运行。
网站的优化通常由三种方法:一是优化网站的后台程序,二是优化服务器平台,三是优化网站的后台数据库。
下面我讲就核工程及自动化系网站的建设谈谈网站优化处理。因为最终软件组合为Linux+Apache+PHP+MySQL,所以这里的程序优化指PHP代码的优化,平台优化指Linux+Apache平台优化,后台数据库优化主要是MySQL的优化。
一优化后台程序
优化网站后台程序的主要工作是对网站的程序代码进行优化处理,尽量提高程序执行效率、减少冗余代码、降低程序使用的系统资源等。
程序模块化,按完成功能的不同来编写源代码,尽量提高重用率。
对一些公共的东西,应该单独放在一个文件中让所有程序调用它,比如连接信息。
举例config.inc
<?
//config.inc
//about mysql server
define("HOST","localhost");
define("USER","root");
define("PASS","");
define("DB","nuclear");

//about website
define("COPYRIGHT",
"<font color=#003399 >Copyright &copy;核工程技自动化系 2001</font>");
define("MASTERMAIL","[email protected]");
$weburl="http://localhost/web/";
$adminurl=$weburl."management/";

define("PAGESIZE",10);

?>
上面程序定义了一些数据库连接参数,主机HOST、用户USER、密码PASS、数据库DB等,在其它需要他们的地方只需加上代码:
<? Require(“$dir$/config.inc”); ?>
再如用户验证部分login.inc
<?
if(!isset($cookie))
header("location:../user/login.php");
exit;
?>
该程序的作用是判断是否存在cookie,如没有则认为该用户还没有登录,将页面转到登录页面。将它放在需要注册用户才可以进入的页面前面就可以防止没有登录的用户进入。
不要大量缓存数据。
通常在查询大量数据需要分页显示时,不要将大量的数据缓存在服务器,那是一个很糟糕的策略。在实现分页显示时最好先计算分页,然后只查询你所需要的当前页的数据。
请看下面的程序listnews.php
<?
require("./include/config.inc");
 
//总纪录数
$conn=mysql_connect(HOST,USER,PASS);

$sql="select count(*) from tb_news ";
$result=mysql_db_query(DB,$sql,$conn);
$row=mysql_fetch_array($result);
$total=$row[0];
mysql_free_result($result);
 
//分页计算
$totalpage=floor(($total-1)/PAGESIZE)+1;
if(!isset(
$page)) $page=1;
if(
$page<1$page=1;
if(
$page>$totalpage$page=$totalpage;
$currenpage=$page;
$pagestart=PAGESIZE*($page-1);
$pageend=PAGESIZE*$page;
if(
PAGESIZE >$total-$pagestart)
    
$currpagesize=$total-$pagestart;
else
     
$currpagesizePAGESIZE;

//分页连接
echo "|";
for(
$i=1;$i<=$totalpage;$i++)
{
if(
$i==$page)
   
$str="    $i  |";
else
   
$str="    <a href='$PHP_SELF?page=$i'>    $i   |</a>";
if(
$i%10==0) echo "\n<br>";
echo 
$str;
}

//查询当前页的内容
$sql="select id,title,issuedate,picture from tb_news order by issuedate desc limit ".$pagestart.",".$currpagesize;
$result=@mysql_db_query(DB,$sql,$conn);
while(@
$row=mysql_fetch_array($result))
{
//输出没条记录内容
}
@
mysql_free_result($result);
mysql_close($conn);
?>
上面程序中直接查询当前页的内容并输出,不需要缓存,节省了系统资源。
但是这并不是说缓存时不需要的,比如一些用户信息可能要多次使用,不可能每次请求都去查数据库,当然就要缓存了。你可以使用cookie和sension保存用户信息。
迟一点获得资源,早一点释放资源。
这种优化方法主要针对数据库连接,一般不要太早建立数据库连接,只有在需要调用时才开始建立连接,查询完成后应尽可能早的关闭连接。举例如下
<?
//…..
$conn=mysql_connect(HOST,USER,PASS);
$sql="select count(*) from tb_news ";
$result=mysql_db_query(DB,$sql,$conn);
while(
$row=mysql_fetch_array($result));
{
    
//存贮数据
}
mysql_free_result($result);
mysql_close($conn);

//其它操作
?>

利用浏览器的验证功能。
现今的浏览器对一些高级功能如XML、DHTML、Java小程序和远程数据服务提供支持,尽可能的利用这些功能来执行客户机的验证和数据缓存,免去了到Web服务器的往返。比如你可以利用JavaScript来验证客户提交数据的有效性,用户名时不是包含特殊字符、邮件地址是否正确等。通过减少客户机和服务器之间的往返,可降低Web服务器的负载,并能减少网络通信量以及服务器访问的任何后段资源。当然,为了安全性你需要在服务端再次验证。
(待续)