php 页面静态化
Posted milkybounty
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 页面静态化相关的知识,希望对你有一定的参考价值。
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 { //如果存在对应的静态文件,则直接访问 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 页面静态化的主要内容,如果未能解决你的问题,请参考以下文章