首页 > 代码库 > 页面静态化
页面静态化
影响网站访问速度:带宽/数据库
连接池,php中没有连接池概念
1.页面静态化,核心即把动态网页转为静态网页,从而减少对数据库操作的次数。
2.缓存技术(memcached)
3.服务器集群(a.硬件 b.软件架构)
4.数据库优化(a.表结构(符合3NF)b.添加适当索引(1.1主键索引 1.2普通索引 1.3唯一索引 1.4全文索引(使用技术:sphinx))c.读写分离 d.分表(垂直分割/水平分割))
u 页面静态化技术
u 几个重要的概念
1、静态网址
举例:http://localhost/test.html
访问页面是静态页面时,输入的url就是一个静态网址
好处:利于seo搜索引擎优化;防止sql注入攻击;不操作数据库,所以效率高
2、动态网址
举例:http://localhost/test.php?age=90
特点:可以接受用户的数据
http://localhost/news.php?lang=cn&class=1&id=2
动态网址,不利于SEO,因为搜索引擎认为,动态网页的内容一般都会和数据库相关,搜索引擎放弃抓取。
3、伪静态网址
为了利于SEO,同时为了防止注入攻击,往往会把动态网站改写成静态网址,称之为伪静态
举例:http://localhost/news.php?lang=cn&class=1&id=2 => http://localhost/news-cn-sport-id2.html
(这个网址就是伪静态),但伪静态不是真正的静态页面,只是形式上的,访问它,仍然会访问数据库。
u 页面静态化的分类
1. 从形式上分为 真静态和伪静态
2. 从范围看: 整体静态化,和局部静态
一个结论:网站能支撑的在线人数大致是支撑并发人数的10倍左右
u 怎样的Html文件,会符号 SEO 的喜好
1.url不要超过255
2.静态页面不要带参数,造成重复抓取
3.meta数据尽量完善
<meta name=”keywords” content=”关键字 ”/>
<meta name=”description” content=”页面的简单介绍”/>
4.<img src=http://www.mamicode.com/”小明.png” alt=”小明”/>
5. 页面不在建议使用 框架 frame/frameset/iframe 不建议在前端页面使用
u 页面静态化有两种 1. 真静态 2. 伪静态
真静态有两种方法
使用PHP中的ob缓存机制来实现页面静态化
使用模板技术来实现页面静态化
u OB缓存是什么?怎么用?
1. 快速入门
注意: 在PHP5.3 这个版本,ob默认是打开的.
PHP5.2 这会报告waring
我们可以通过 php.ini 中可以配置是否启用 ob
初步的认识:
我们可以认为,在apache的服务器端,有两个缓存,ob缓存(程序员自己可以控制),程序缓存(这个一定存在)
当有一段代码<?php echo "abc";?>如果有echo,当启用ob缓存,echo的数据优先放进ob缓存,没有,则直接放进程序缓存。
如果只有程序缓存,要注意,http协议规定,header前不能有echo语句,即不能有任何输出
ob的相关函数.
说明的代码:
ob3.php
<?php
//这里我们可以再找个页面把ob缓存打开
//开启ob缓存
ob_start();
echo "hello,wrold!";
header("content-type: text/html;charset=utf-8");
echo "你好!";
//把ob内容缓存清空,但是ob缓存还在
//ob_clean();
//把ob内容缓存清空,同时关闭ob缓存
//ob_end_clean();
//把ob缓存的内容,刷新到程序缓存,同时关闭ob缓存
//ob_end_flush();
//把ob缓存的内容,刷新到程序缓存,不关闭ob缓存
ob_flush();
echo "笑傲江湖";
//获取ob缓存内容
$con=ob_get_contents();
//需要把日志,写入文件. echo print_r var_dump ,写文件 ,下断点.
file_put_contents("d://hsp.log",$con);
现在我们再说最后一个函数 flush()
该函数是把 程序缓存的内容,强制刷新到 浏览器
这里有一个知识点:
当我们请求一个PHP页面时,该页面会发出几次请求,和各部分的代码在哪里
页面静态化