继续浏览精彩内容
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
PHP实现页面静态化课程-简单小结
D蓝叶
2017-09-02 10:57:21
浏览 6538
D蓝叶
关注TA
已关注
手记
6
粉丝
14
获赞
307
关于静态
- 动态页面与静态页面
1、动态文件执行过程:语法分析-编译-运行
2、静态文件,不需要编译,直接运行。
静态文件不去进行语法分析和编译,直接去运行就可以了,所以加载静态文件要比动态文件要快
- 优化页面响应时间
1、动态页面静态化
2、优化数据库
3、使用负载均衡
4、使用缓存
- 静态与伪静态
1、从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式
2、伪静态只是改变了URL的表现形式,实际上还是动态页面
3、静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
总结,在SEO方面,伪静态和静态页面的功能是相同的,但是伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。
- 静态化类别
1、全部静态化
2、局部静态化(使用ajax)
3、伪静态
buffer介绍
- buffer
缓冲区开启,所有输出的内容先存到内部缓冲区;
缓冲区流程:内容-buffer-tcp-客户端
1、php.ini文件中output_buffering=off,在程序前写入ob_strat();内置函数即可
2、php.ini文件中output_buffering=on,即开启时,直接使用ob_get_contents();获的缓冲区内容
如:file_put_contents("output.html", ob_get_contents());
// 将当前的php缓存(output_buffering)内容输出到output.html文件中。
- buffer函数
1、ob_start() 打开输出缓冲
2、ob_get_contents() 得到当前缓存去内容
3、ob_clean() 清空当前缓存区
4、ob_get_clean() 相当于 ob_get_contents() + ob_clean() 两个函数的功能
的缓存区内容 并清空当前缓存区
- php实现静态化
PHP实现页面静态化有一下步骤:
1:A.php请求数据库数据:通过mysql或者mysqli或者PDO扩展
2:在B.html中输出A.php请求的数据库数据:一般是将将在数据库中取出的数组形式的数据赋予新的数组,并且输出
3:在A.php中包含B.html文件:直接通过require_once()函数或者inclde_once()
4:开启数据缓存ob_start()=>获取获取缓存内容并且将数据生成在静态文件中file_put_contents('index.shtml',ob_get_clean());
生成静态页面三种方式
- 页面添加缓存时间
- 用户请求页面
- 判断页面缓存文件是否存在是否过期,主要看页面的最后修改时间,使用filemtime
- 如果没有过期则获取静态页面,如果过期了则重新生成一个静态页面
if(is_file('./index.shtml') && (time() - filemtime('./index.shtml')) < 300) {
require_once('./index.shtml');//filemtime();获取文件最后修改时间
} else {
...
}
- 手动触发
类似dedecms
- crontab定时扫描程序
crontab定时扫描
/5 * php /data/www/demo/index.php 每5分钟
分 时 日 月 周
新建: crontab -e
查看 crontab 日志文件 tail -f /var/log/cron.log
伪静态
- php处理伪静态
通过php的正则判断来实现
- apache伪静态
1、开启重写模块
打开httpd.conf文件
开启模块:LoadModule rewrite_module modules/mod_rewrite.so
开启文件:Include conf/extra/httpd-vhosts.conf
2、重写规则
找到文件:httpd-vhosts.conf配置相关的文件信息
//开启
RewriteEngine on
//开启,能自动识别存在的目录文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
//开启,定义伪静态的规则(如果不存在,则执行下面的伪静态规则)<br>
RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1<br>
//在浏览器地址栏输入2.html,会自动执行detail.php并传递浏览器传递过来的id,我们可在detail.php输出
- nginx伪静态
nginx下rewrite配置
rewrite ^/detail/(\d+).html$ /detail.php?id=$1 last;
1、通过xshell连接虚拟机
cd /etc/nginx/conf.d
sudo vim static.singwa.com.conf
在server->location->if语句里插入下面这段代码:
rewrite ^/detail/(\d+).shtml$ /detail.php?id=$1 last;
2、编写detail.php代码
cd /data/static/
sudo vim detail.php
<?php
echo "nginx: this id is ".$_GET['id'];
3、重启nginx服务器
sudo service nginx restart
注:该文章为观看“PHP实现页面静态化"课程后,大量参考学者们的笔记并加以整合的一篇文章,以供大家参考及补充。
打开App,阅读手记