php页面静态化
如何优化页面响应时间:
- 动态页面静态化
- 优化数据库
- 使用负载均衡
- 使用缓存
如果页面中的一些内容不经常改动,可以使用动态页面静态化。好处是:减少服务器脚本的计算时间;降低服务器的响应时间。
1、动态URL地址设置静态形式(伪静态)
例如:http://xxx.com/index.php?c=play&id=1111 =>
http://xxx.com/play/1111.html (并不是一个纯静态页面)
2、buffer
buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域。
编写一个buffer.php文件,并保存,并不是直接将文件内容保存在磁盘里,而是先把内容写入到buffer中,当一个buffer写满的时候,会把buffer中的数据写入到磁盘里,这是操作系统的buffer。
当执行一个PHP程序的时候,如果有输出内容,会先放到输出缓冲区,数据再通过tcp传给客户端或浏览器。
要想数据能够放到输出缓冲区,首先打开输出缓冲,通过php.ini文件output_buffering = On或者ob_start(),然后使用ob_get_contents()获取输出缓冲区内容。
3、PHP实现页面纯静态化
纯静态化的html文件放在服务器端的磁盘。
基本方式:
- file_put_contents()函数;
int file_put_contents ( string $filename
, mixed $data
[, int $flags
= 0 [, resource $context
]] )
成功会返回写入到文件内数据的字节数,失败时返回false。
- 使用PHP内置缓存机制实现页面静态化-output_buffering
ob函数
ob_start(); 打开输出缓冲区
ob_get_contents(void);返回输出缓冲区内容
ob_clean(void);清空输出缓冲区
ob_get_clean(void);得到当前缓冲区的内容并删除当前输出缓冲区
生成纯静态页面的三种方式:
- 页面添加缓存时间
<?php
//存在index.html并且在有效时间以内(5分钟)
if (file_exists('index.html') && (time()-filemtime('index.html') < 300)) {
require_once 'index.html';
}else{
ob_start();
//连接数据库获取数据并填充到模板
echo 'helllo world';
file_put_contents('index.html', ob_get_contents());
}
?>
- 手动触发
后台手动设置,主动生成
- linux crontab 定时扫描程序
crontab -e //编辑某个crontab文件,文件内容如:*/5 * * * * php执行程序所在目录 /xx/xx.php
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
4、伪静态
PHP处理伪静态:正则表达式匹配
//http://xxx.cn/xx/test4.php/2/11.html
//http://xxx.cn/xx/test4.php?page=2&id=1,实际的访问路径
if(preg_match('/\/(\d+)\/(\d+).html/', $_SERVER['PATH_INFO'], $matches)){
$param['page'] = $matches[1];
$param['id'] = $matches[2];
}
Apache下rewrite配置:
http://myapps.com/detail/12.html ==> http://myapps.com/apps/detail.php?id=12(实际访问的路径)
httpd.conf文件:开启LoadModule rewrite_module modules/mod_rewrite.so
extra/httpd-vhosts.conf文件 作如下配置:
<VirtualHost 127.0.0.2:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "D:/wamp/www/myProject"
ServerName myapps.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
RewriteEngine on
#如果detail目录下有12.html文件,就优先访问该目录下的文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/detail/([0-9]*).html$ /apps/detail.php?id=$1
</VirtualHost>
http://www.onexin.net/apache-rewrite-detailed/
php页面静态化的更多相关文章
- 页面静态化技术Freemarker技术的介绍及使用实例.
一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...
- JSP页面静态化
Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)
一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)
一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...
- php页面静态化技术;学习笔记
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C# MVC 页面静态化导致的问题
在设置页面静态化的路由,代码如 //静态路由 routes.MapRoute( name: "html", url: "{controller}/{action}.htm ...
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- ASP.NET MVC使用SSI来实现页面静态化
页面静态化分为两种:伪静态和真静态,这里主要介绍的是真静态. 进入正题之前先简单介绍一下SSI和shtml: 1).SSI是Server Side Include的简称(服务器端嵌入) 2).shtm ...
随机推荐
- android studio building project info 错误
D:\ProgramFiles\android-studio\plugins\android\lib\templates\gradle\wrapper\gradle\wrapper\gradle-wr ...
- C#写快速排序
//先上快排代码------------------------------------------------------------------------public static void Q ...
- 关于JS
首先推荐一个小插件:W3Cfuns前端开发工具箱 整理一些杂乱的知识点. 1,Dom用于操作html元素 2,window.location.reload();//刷新当前页********** 3, ...
- Allok Video to FLV Converter 可以用的 FixFlash.exe
纸飞机 拷至 c:\windows\system32 ok 下载链接:http://pan.baidu.com/s/1eQwz0DO 软件下载:http://pan.baidu.com/s/1sjGv ...
- echarts 折线图动态x轴及数据
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...
- 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案 近乎(英文:Spacebuilder),作为.net领域的SNS社区建站系统代表之一,一直在技术开发领域算是兢兢业业,在Discuz!和Php ...
- 图说hibernate注释--java里配置参数(一.1)
**************************************************************[来自我另一博文]
- Java并发编程:并发容器之ConcurrentHashMap(转载)
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...
- NOSQL学习笔记系列之MongoDB 一 基础
主题:MongoDB 学习资料参考网址: 1.http://www.w3cschool.cc/mongodb/mongodb-tutorial.html 2.http://www.icoolxue.c ...
- Hibernate总结(二)
在上一篇Hibernate总结(一)简单总结了一级缓存,快照,增删改查的简单使用,这一篇总结两张表的级联操作. 级联涉及到三种情况,many-many,1-many,many-1. 首先是1-many ...