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

PHP基础知识------页面静态化的更多相关文章

  1. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_09-freemarker基础-内建函数

    可以理解为freemaker提供的一些函数和方法 controller里面记得把map的数据注释去掉,.放开代码 工程需要重启下 <br/> 学生的个数: ${stus?size} < ...

  2. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  3. SpringBoot2 整合FreeMarker模板,完成页面静态化处理

    本文源码:GitHub·点这里 || GitEE·点这里 一.页面静态化 1.动静态页面 静态页面 即静态网页,指已经装载好内容HTML页面,无需经过请求服务器数据和编译过程,直接加载到客户浏览器上显 ...

  4. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  5. JSP页面静态化

    Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...

  6. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)

    页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ①     配置php.ini ...

  7. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)

    一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...

  8. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)

    一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...

  9. php页面静态化技术;学习笔记

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. python爬取“美团美食”汕头地区的所有店铺信息

    一.目的 获取美团美食每个店铺所有的评论信息,并保存到数据库和本地 二.实现步骤 获取所有店铺的poiId 首先观察详情页的url,后面是跟着一串数字的,而这一串数字代表着每个店铺特有的id号,我们称 ...

  2. 误删SQL Server日志文件后怎样附加数据库

    SQL Server日志文件因为误操作被删除,当附加数据库的时候提示:附加数据库失败. 解决办法如下: 1.新建一个同名数据库. 2.停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘 ...

  3. 接触python的第2天:了解变量和打印

    1变量不用定义类型, 可以直接赋值 >>> a =5 >>> a 5 >>> a='hello' >>> a 'hello' 2 ...

  4. 从React Native到微服务,落地一个全栈解决方案

    Poplar是一个社交主题的内容社区,但自身并不做社区,旨在提供可快速二次开发的开源基础套件.前端基于React Native与Redux构建,后端由Spring Boot.Dubbo.Zookeep ...

  5. 【Java】java获取request body

    //方式一 public static String ReadAsChars(HttpServletRequest request) { BufferedReader br = null; Strin ...

  6. springBootJpa 联表分页查询总数不准的问题

    问题情景: 在联表查询时 ``` // 两张表关联查询 Join<Project, Plan> planJoin = root.join("plans", JoinTy ...

  7. English-GIS

    "Toposheet" 是 "Topographic sheet" 的简称,既地形图图幅的意思.

  8. The Stream of Corning 2( 权值线段树/(树状数组+二分) )

    题意: 有两种操作:1.在[l,r]上插入一条值为val的线段 2.问p位置上值第k小的线段的值(是否存在) 特别的,询问的时候l和p合起来是一个递增序列 1<=l,r<=1e9:1< ...

  9. Thymeleaf 遇到的问题

    1. 后台传递long类型的值作为 js 执行方法的参数,精准度失效解决办法 解决办法:用thymeleaf的拼接字符串方法来解决 例:<button class="btn btn-p ...

  10. QT简介及下载

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI 程序,比如控制 ...