文档章节

小蚂蚁学习页面静态化(1)——静态化的原理

嗜学如命的小蚂蚁
 嗜学如命的小蚂蚁
发布于 2015/10/09 19:52
字数 597
阅读 253
收藏 4
点赞 0
评论 2

关于页面php文件执行阶段

语法分析——》编译——》运行

如何优化页面的响应时间

  1. 动态页面静态化

  2. 优化数据库

  3. 使用负载均衡

  4. 使用缓存

    页面静态化能够解决的问题    1.减少服务器脚本的计算时间    2.降低服务器的响应时间    但是静态化不适用于内容经常变换的页面。


Buffer认知

Buffer就是一个缓冲区,一个内存地址空间,用于存储数据的区域

 

输出流程

内存-》php buffer-》tcp-》终端

将Php.ini中    output_buffering = on  Php5.3以上默认是开启的。

Ob_get_contents() 获取php缓冲区的文件

如果php.ini缓冲区没有开启,可以再脚本上部添加ob_start();开启

php如何实现页面纯静态化呢?

基本方式          

1.File_put_contents()函数

2.使用php内置缓存机制实现页面静态化 – output_buffering

操作缓冲区的函数ob_*

Ob函数

Ob_start           打开输出控制缓冲

Ob_get_contents           返回输出缓冲区内容

Ob_clean           清空(擦掉)缓冲区内容

Ob_get_clean                      得到当前缓冲区的内容并删除当前输出缓冲区

这四个是核心参数,静态化的核心思想就是,将保存到缓冲区的内容拿出来,保存在本地文件内。例如:

    准备两个文件,一个是模板文件template.php,一个实现静态化的脚本index.php。

<!doctype html>
<html>
	<head>
		<meta charset='utf-8' />
		<title>
			<title>这里是一个模板文件 template.php </title>
		</title>
	</head>
	<body>
		<ul>
			<?php foreach ($arr as $key => $value) { ?>
				<li><?php echo $value['title'] ?></li>
			<?php } ?>
		</ul>
	</body>
</html>

    下面开始是实现将上面的模板文件静态化的过程。

<?php
        //按照常规套路的话,这个数组应该是从数据库中拿到的,这里为了简便就直接准备一个二位数组
	$arr	=	array(
			0=>array('title'=>'这里是第一个标题'),
			1=>array('title'=>'这里是第二个标题'),
			2=>array('title'=>'这里是第三个标题')
		);
	
        //缓冲区必须要在输出之前开启
	ob_start();
	//把模板文件引入
	include_once('./template.php');
        //从缓冲区拿到文件,写到本地保存起来
	if(file_put_contents('./text.txt', ob_get_clean())){
		echo 'success';
	}else{
		echo 'error';
	}
?>

    页面静态化的原理就是这样了。


© 著作权归作者所有

共有 人打赏支持
嗜学如命的小蚂蚁
粉丝 136
博文 161
码字总数 100864
作品 0
郑州
程序员
加载中

评论(2)

嗜学如命的小蚂蚁
嗜学如命的小蚂蚁

引用来自“crazymus”的评论

静态化还是非常有用的,降低了数据库的压力,也减少了php解释器的处理次数。
恩恩,那可要多学习学习了,还望不吝赐教
crazymus
crazymus
静态化还是非常有用的,降低了数据库的压力,也减少了php解释器的处理次数。
小蚂蚁学习页面静态化(3)——页面静态化中局部动态化案例实现

说白了,其实就用到了一个知识点——ajax。在静态化页面中使用ajax动态获取数据库中的数据,写入到静态化页面中相应的位置即可。虽然这些代码在平时的工作中都写烂了,但我还是决定在博客中重...

嗜学如命的小蚂蚁 ⋅ 2015/10/11 ⋅ 0

知识总结 插件化学习 Activity加载分析

现在安卓插件化已经很成熟,可以直接用别人开源的框架实现自己项目,但是学习插件化的实现原理是安卓研发工程师加深安卓系统理解的很好途径。 安卓插件化学习 插件Activity加载方式分析 实现...

CankingApp ⋅ 2017/05/19 ⋅ 0

CMS

1.CMS 是什么? 内容管理系统(Content Management System,简称CMS)是指在一个合作模式下,用于管理工作流程的一套制度。该系统可应用于手工操作中,也可以应用到电脑或网络里。作为一种中...

一杯千岁醉 ⋅ 2017/05/22 ⋅ 0

大公司里怎样开发和部署前端代码?

这是一个非常有趣的 ,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中。 在我的印象中,facebook是这个领域的鼻祖,有兴趣、有梯子的同学...

卟想苌亣 ⋅ 2017/11/15 ⋅ 0

谈谈变量初始化顺序、构造器执行顺序

今天看了李刚的文章,很有感触,抱着学习的心态记录一下自己的学习心得!我是一个刚刚进入java世界的初学者,如果写错了,请大家指正! static修饰的变量 在文章中被称为 类变量,非static变...

tiger1986 ⋅ 2013/06/26 ⋅ 0

变态的静态资源缓存与更新

这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中。 在我的印象中,facebook是这个领域的鼻祖,有兴趣...

Jathon ⋅ 2015/04/22 ⋅ 1

小蚂蚁学习页面静态化(2)——更新生成纯静态化页面的三种方式

更新生成纯静态化页面的三种方式:1.按照时间间隔更新。2.手动更新。3.定时更新(需要系统配合)。 1. 按照时间间隔更新。 当用户第一次访问这个页面的时候,程序自动判断,该静态文件是否存...

嗜学如命的小蚂蚁 ⋅ 2015/10/10 ⋅ 2

Java中类与方法的学习笔记(一):

关于JAVA中类与方法的学习笔记(一): (笔者是一个计算机的学生,四年没怎么用功,所以在JAVA语言的认知上很模糊,接近小白但又不是小白。下面的总结记录完全是按照笔者个人的认知范围和重...

萧沐垚 ⋅ 2016/12/16 ⋅ 0

小蚂蚁学习APP接口开发(4)—— 静态缓存的操作方法和定时任务

静态缓存的操作 这个之前写的页面静态化有异曲同工之妙,无非就是获取数据、写入数据、读出数据则几个动作。例子中写了一个方法,通过对参数的判断,可以对静态缓存文件进行生成、修改和删除...

嗜学如命的小蚂蚁 ⋅ 2015/10/16 ⋅ 0

小蚂蚁学习页面静态化(完结)——伪静态的实现和配置方法

伪静态的作用:1.让url更加美观。2.对搜索引擎更加友好。 php处理伪静态案例分析(pathinfo模式) 备注:nginx服务器默认下是不支持pathinfo模式的,需要去配置 通过正则表达式去分析伪静态u...

嗜学如命的小蚂蚁 ⋅ 2015/10/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 25分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 31分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 33分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 42分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 45分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部