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 ...
随机推荐
- Mac下Vim配置语法高亮
设置终端的字体颜色 如图,打开终端然后,选择偏好设置,再选择描述文件,再窗口左侧可以选择系统配置好的,或者你也可以自定义,最后别忘了把你的配置设置成默认就行 Vim语法高亮设置 只需要找到vimrc配 ...
- SQL Pretty Printer-不错的SQL格式化工具
前言 好长时间没有写过博客了,人变懒了很多,应该说本来也不怎么勤快.但今天为了这个工具,必须得勤快一下了,天下真的没有免费的午餐. 之前使用过sql server 2000的查询设计器和Toad fo ...
- mysql 学习笔记 第二天
插入表格数据: Insert into table_name set columns_1=value1,columns_2=value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数 ...
- python读取文件的前几行
文件内容rolling.txt: There's a fire starting in my heart 我怒火中烧 Reaching a fever pitch and it's bringing ...
- python 三级菜单
三级列表: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, ...
- mysql 更改默认数据目录
http://www.cnblogs.com/chenny7/p/3642363.html 本文主要介绍在CentOS下通过yum命令安装MySQL之后,如何移动默认数据目录到指定位置. 安装mysq ...
- jenkins 邮件配置
jenkins 自带一个邮件的通知的功能,但是自带的邮件通知功能,有点简单不能自定义信息,所以我们安装邮件插件Email-ext plugin.1.首先在系统管理-插件管理-安装Email-ext p ...
- 高效 Java Web 开发框架 JessMA v3.2.3 正式发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- Spring IoC源码解决——工具篇Eclipse
题外话 对于Spring框架,平时都是点到为止,停留在会用的程度.一直以来都想深入学习下,刚好最近看到<Spring源码深度解析>,所以想随着书本深入学习一下. 如果用Maven 如果使用 ...
- 12款支持移动设备的响应式 WordPress 主题
响应式和现代设计风格的多用途 WordPress 主题与能够非常灵活的适应所有设备.而高级主题能够更大可能性的轻松定制.所有的主题是完全响应式的,您可以从主题选项中启用响应模式. 今天,这个列表收集了 ...