zoukankan      html  css  js  c++  java
  • PHP基础知识------页面静态化

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

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

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

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

    test.php

    <?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

    <!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手册  缓存=>静态缓存

    <?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

  • 相关阅读:
    实例属性的读取与设置
    淘宝ued
    反射发出动态类型(下)
    iOS多线程的初步研究3
    C# 自动提交到百度ping服务
    .NET自带IOC
    Entity Framework返回IEnumerable还是IQueryable?
    ASP.NET MVC4简单使用ELMAH记录系统日志
    ASP.NET基础之HttpModule学习
    【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)
  • 原文地址:https://www.cnblogs.com/liepan/p/7889563.html
Copyright © 2011-2022 走看看