PHP页面静态化
2016-01-08 09:16
671 查看
动态页面
静态页面
关于优化页面响应时间
动态页面静态化
优化数据库
使用负载均衡
使用缓存
动态页面静态化不适用于内容经常变动的应用,例如微博…
动态程序
连接数据库服务器或者缓存服务器
获取数据
填充到模板
呈现给用户
关于动态URL地址设置静态形式
c代表控制器
a代表index的方法
加载之后仍然是动态页面,伪静态
纯静态化案例实现
buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域
输出流程
php如何实现页面纯静态化
file_put_contents()函数
fwrite—写入文件
使用PHP内置缓存机制实现页面静态化-output_buffering
ob
纯静态
单例模式连接数据库
构造函数需要标记为非public,防止外部使用new操作符创建对象,单例类不能在外部实例化,只能在内部,这样进行访问控制
拥有一个保存类的实例的静态成员变量
拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化)
如何出发系统生成纯静态化页面
静态文件.shtml
页面添加缓存时间
filemtime()获取文件修改时间
time()-filemtime()<设定时间
手动触发
crontab定时扫描程序
important
局部动态化案例
ajax技术
编写接口(api)
ajax请求接口操作
伪静态
PHP处理伪静态
Web服务器rewrite配置
虚拟域名配置
httpd_vhosts.conf配置文件配置相关信息
终端执行sudo a2enmod rewrite
或者使用 ln 命令
最后重启Apache服务器
静态页面
关于优化页面响应时间
动态页面静态化
优化数据库
使用负载均衡
使用缓存
动态页面静态化不适用于内容经常变动的应用,例如微博…
动态程序
连接数据库服务器或者缓存服务器
获取数据
填充到模板
呈现给用户
关于动态URL地址设置静态形式
c代表控制器
a代表index的方法
加载之后仍然是动态页面,伪静态
纯静态化案例实现
buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域
输出流程
//php.ini ob_start();//开启缓冲区,当php.ini中output_buffering未开启的时候,可以采用这种方法 output_buffering = 4096 ob_get_contents();//获取缓冲区的内容
php如何实现页面纯静态化
file_put_contents()函数
fwrite—写入文件
使用PHP内置缓存机制实现页面静态化-output_buffering
ob
ob_start //打开输出控制缓冲 ob_get_contents //返回输出缓冲区内容 ob_clean //清空(擦掉)输出缓冲区 ob_get_clean //得到当前缓冲区的内容并删除当前输出缓冲区
file_put_contents('生成文件名称(自定义)','写入内容');
纯静态
//1.连接数据库,然后从数据库里面获取数据 //2.把获取到的数据填充到模板文件里面 //3.需要把动态的页面转化为静态页面,生成纯静态化文件
单例模式连接数据库
构造函数需要标记为非public,防止外部使用new操作符创建对象,单例类不能在外部实例化,只能在内部,这样进行访问控制
拥有一个保存类的实例的静态成员变量
拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化)
<?php /** * 数据库链接封装 * 代码注释(done) */ class Db { // 存储类的实例的静态成员变量 static private $_instance; // 数据库链接静态变量 static private $_connectSource; // 链接数据库配置 private $_dbConfig = array( 'host' => '127.0.0.1', 'user' => 'root', 'password' => '', 'database' => 'cms', ); private function __construct() { } /** * 实例化 */ static public function getInstance() { // 判断是否被实例化 // 访问实例的公共的静态方法 if(!(self::$_instance instanceof self)) { //本类的属性$_instance是否是本类的实例 //self指的是本类 self::$_instance = new self(); } return self::$_instance; } /** * 数据库链接 */ public function connect() { if(!self::$_connectSource) { // 数据库链接 self::$_connectSource = @mysql_connect($this->_dbConfig['host'], $this->_dbConfig['user'], $this->_dbConfig['password']); //@符号为阻止警告输出 if(!self::$_connectSource) { // 抛出异常处理 throw new Exception('mysql connect error '); } // 选择一款数据库 mysql_select_db($this->_dbConfig['database'], self::$_connectSource); // 设置字符编码 mysql_query("set names UTF8", self::$_connectSource); } // 返回资源链接 return self::$_connectSource; } } //test /** $connect = Db::getInstance()->connect(); $sql = "select * from 表名"; $result = mysql_query($sql,$connect); echo mysql_num_rows($result); var_dump($result); */
//1.链接数据库,从数据库里面获取数据 //2.把获取到的数据填充到模板文件里面 //3.需要把动态的页面转化为静态页面,生成纯静态化文件 <ul> <?php foreach($news as $k = >$v)
如何出发系统生成纯静态化页面
静态文件.shtml
页面添加缓存时间
filemtime()获取文件修改时间
time()-filemtime()<设定时间
手动触发
crontab定时扫描程序
important
局部动态化案例
ajax技术
编写接口(api)
ajax请求接口操作
//jquery方式调用ajax $.ajax({ url:'', type: 'get', dataType:'json', error:function(){ }, success:function(result){ }, });
伪静态
PHP处理伪静态
/* 通过正则表达式去分析伪静态URL地址 eg: http://state.com/newsList.php?type=2&category id=1 伪静态地址 http://state.com/newsList.php/2/1.html 2=》type=2 1=>category_id=1 */ //正则表达式 preg_match('/^\/(\d+)\/(\d+).html/',,)
Web服务器rewrite配置
虚拟域名配置
httpd_vhosts.conf配置文件配置相关信息
AllowOverride None 修改为 AllowOverride ALL
终端执行sudo a2enmod rewrite
或者使用 ln 命令
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
最后重启Apache服务器
//伪静态配置方案 RewriteEngine on /* 1.d代表目录,f代表文件 2.该设定是在网站文件目录下,如果有相同的目录,访问存在目录,而不是访问伪静态文件 */ RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-d RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-f Rewrite ^/detail/([0-9]*).html$/detail.php?id=$1
相关文章推荐
- PHP中list()函数用法实例简析
- PHP操作数据库
- PHP的单态类——为了产生唯一的对象
- PHP烂代码救星-之上传2附件《读thinkphp代码有感》 2016-01-07
- [笔记]几个简单有用的PHP函数
- PHP慢慢长路之问题与解决方法(1)――去除li下的圆点,记住啦~
- PHP中list()函数用法实例简析
- PHP中each与list用法分析
- 深入浅析php中sprintf与printf函数的用法及区别
- PHP 7.0.2 正式版发布
- PHP使用数组依次替换字符串中匹配项
- PHP实现搜索地理位置及计算两点地理位置间距离的实例
- 理解PHP中的Session及对Session有效期的控制
- 在PHP站点的页面上添加Facebook评论插件的实例教程
- 关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
- PHP文件操作之获取目录下文件与计算相对路径的方法
- 第七篇 PHP编码规范
- ftp上传文件
- php 返回查询结果某个字段
- 苹果电脑开启php的xdebug插件