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 ...
随机推荐
- JS打印页面指定区域
错误的写法: //打印 function printPage(areaId) { if (parent.$("#PrinFrame").length == 0) { parent. ...
- 开发ASP.NET MVC设置统一的命名空间
当你创建一个全新的ASP.NET MVC专案之后,你想设置统一的命名空间,从可以下面几次入手. 首先设置专案的属性: 第二步,打开Views/Web.config文件,修改: 第三步,修改路由文件的命 ...
- .net用SQL Server进行session会话管理
保存在内存中的session经常由于dll的变动导致丢失.有一种方法可以长期保存session,那就是session的SqlServer模式. ASP.NET允许将会话数据存储到一个数据库服务器中,方 ...
- Java--关于计算表达式中赋值的细节问题
public class Test { public static void main(String[] args) { int t = 0; int p = 0; int q = 0; int ta ...
- Python Sqlite3以字典形式返回查询结果
sqlite3本身并没有像pymysql一样原生提供字典形式的游标. cursor = conn.cursor(pymysql.cursors.DictCursor) 但官方文档里已经有预留了相应的实 ...
- PHP两个数组相加
在PHP中,当两个数组相加时,会把第二个数组的取值添加到第一个数组上,同时覆盖掉下标相同的值: <?php $a = array("a" => "apple& ...
- 软件项目发展历史<人月神话>这本书好
几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...
- TestNG官方文档中文版(2)-annotation
TestNG的官方文档的中文翻译版第二章,原文请见 http://testng.org/doc/documentation-main.html 2 - Annotation 这里是TestNG中用到的 ...
- C# 7个读写Excel文件的类库
转载自:http://www.cnblogs.com/wintersun/archive/2013/02/26/2933294.html 有时我们在项目需要操作Excel文件,读或写,导出数据等. ...
- Spring IoC源码解读——谈谈bean的几种状态
阅读Spring IoC部分源码有一段时间了,经过不断的单步调试和参阅资料,对Spring容器中bean管理有了一定的了解.这里从bean的几个状态的角度出发,研究下IoC容器. 一.原材料 Xml中 ...