tofacebook.com -专业IT技术社区 php 页面静态化 Web程序【tofacebook.com】 - tofacebook.com-专业IT技术社区
66°

php 页面静态化 Web程序【tofacebook.com】

标签:lsp   Fix   pac   页面   函数   Once   char   mtime   就是   

1、在开发项目时,有时会遇到一些页面数据量特别大,但是又不经常改变的情况,如商城首页等,这时候就需要进行页面静态化,减轻服务器和数据库的压力。

这里我们先用原生的PHP写一个简单的demo,用来理解页面静态化的原理,然后再尝试用框架说明一下(thinkphp)。

主要会使用到PHP的ob相关函数和文件操作函数file_put_contents.

这里在项目中新建了两个文件,test.php(控制器),muban.php(模板)

test.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
if ( file_exists ( "match.html" ) && (time()- filemtime ( "match.html" ))<300)
{
     //如果存在对应的静态文件,则直接访问
     require_once ( "match.html" );
} else {
     //这里用数组来仿真数据库操作,现实一般都是操作数据库得到对应数据
     $student  array ( "huangxing" , "chenyuwei" , ‘xufei‘ , ‘zhangjingwen‘ , ‘xuepei‘ );
     ob_start();
     //载入模板
     require_once ( "muban.php" );
     file_put_contents ( "match.html" ,ob_get_clean());
     require_once ( ‘match.html‘ );
     
}

  muban.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang= "en" >
<head>
     <meta charset= "UTF-8" >
     <title>Document</title>
</head>
<body>
     <ul>
     <?php  foreach  ( $student  as  $key  =>  $value ) {?>
         <li><?php  echo  $value ;?></li>
     <?php } ?>
     </ul>
</body>
</html>

  然后在浏览器执行test.php,就可以看到项目中生成了match.html静态文件。

以上是一个全静态化的demo,现实项目中可能会遇到局部动态化的情况。如商城首页,大部分是不需要修改的,但是可能有一个实时的活动需要在首页展示,这是可以使用ajax异步加载技术。

一般的框架中都自定义好了页面静态化函数,或者相关配置,以thinkphp3.2为例,只需要在配置文件做相关配置就可以,具体可以参考thinkphp手册  缓存=>静态缓存

1
2
3
4
5
6
7
8
9
10
<?php
return  array (
     ‘HTML_CACHE_ON‘      =>    true,  // 开启静态缓存
     ‘HTML_CACHE_TIME‘    =>    3600,    // 全局静态缓存有效期(秒)
     ‘HTML_FILE_SUFFIX‘   =>     ‘.shtml‘ // 设置静态缓存文件后缀
     ‘HTML_CACHE_RULES‘ =>  array ( // 定义静态缓存规则
         ‘Index:index‘     => array ( ‘{:controller}_{:action}‘ ),
         ),
     ‘HTML_PATH‘ => ‘./HTML/‘ ,
);

  这里需要注意的就是 HTML_CACHE_RULES

php 页面静态化

标签:lsp   Fix   pac   页面   函数   Once   char   mtime   就是   

原文地址:https://www.cnblogs.com/milkybounty/p/9989310.html


本文由百家号/熊掌号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。

已有 0 条评论

    我有话说: