php专区

 首页 > php专区 > PHP进阶 > 方法&架构 > 大型网站提升访问速度关键技术 —— 页面静态化

大型网站提升访问速度关键技术 —— 页面静态化

分享到:
【字体:
导读:
         摘要:大型网站关键技术介绍 pv值——访问量大 带来的问题: a.流量大——解决方案:买带宽;优化程序 b.并发量大——对程序的架构重新设计->服务器集群 服务器集群部署图: 2.数据量大 解决方...

大型网站提升访问速度关键技术 —— 页面静态化

大型网站关键技术介绍

  1. pv值——访问量大

带来的问题:

a.流量大——解决方案:买带宽;优化程序

b.并发量大——对程序的架构重新设计->服务器集群

服务器集群部署图:

服务器集群

2.数据量大

解决方法:

1)数据库优化

a.表的设计合理

b.分表技术——水平分割、垂直分割

c.建立索引

d.读写分离

e.mysql配置优化(调整最大并发量,定时对数据库进行碎片处理?crontab)

f.硬件升级

2)页面静态化

3)memcached

页面静态化流程图:

页面静态化

一、几个概念

1)静态网址

如果我们访问的页面是静态页面,我们把这个url称作静态网址

特点:利于SEO;访问速度快;防止SQL注入

2)伪静态网址

在实际开发中,我们希望达到这样的目的:把下面的网址

http://localhost/news.php?lang=cn&class=sport&id=2

改成如下网址

http://localhost/news-cn-sport-2.html

这种网址就称之为伪静态网址

特点:利于SEO;防止SQL注入

二、Apache优化

1)压力测试工具:ab(apache自带的)

ab?-n?访问的总次数?-c?并发量?url

如:ab?-n?10000?-c?100?http://localhost/test.php

ab测试

2)MPM(多路处理模块,即Apache采用怎样的方式来处理并发)是Apache的一种处理并发的方式:

①prefork?预处理进程方式

②worker?工作模式

③winnt?这个一般说是windows采用的

mpm

 

3)如何修改Apache的最大并发数

①在http.conf中修改:

#Server-pool?management(MPM?specific)

Include?conf/extra/httpd-mpm.conf

②确定当前的Apache是什么MPM模式

进入apache/bin,执行httpd?-l

查看apache模式

如上图说明是winnt模式

③然后进入httpd-mpm.conf修改相应模式的最大并发数

在linux下一般来说采用的MPM是prefork模式,对于中型网站,合理的配置如下:

prefork

如果网站的PV值上百万,可以修改ServerLimit和MaxClients这两个参数

如果上千万,就要用到负载均衡了

三、SEO小技巧

Baidu和google更偏好静态网址(伪静态)

<a href=seo" src="http://www.icultivator.com/wp-content/uploads/2014/03/seo.png?watermark/1/image/aHR0cDovL3N0YXRpYy5uYmxhLmNuLzEzMTAxMTYxMDktMi5wbmc=/dissolve/100/gravity/SouthEast/dx/10/dy/0" width="643" height="261" />

四.缓存机制

1)使用PHP自己的缓存机制

先说明一下ob缓存机制

在php5.2这个版本在php.ini有一个配置选项output_buffering,默认是关闭,那么下面这段代码就会报错:

echo?"xxx";
header("Content-type:text/html;charset=utf-8");
echo?"xxx";

解决办法:

将header放到最前面;开启ob缓存——1.配置ob选项;2.ob_start();

几个原则:

如果ob缓存打开,则echo的数据先放到ob缓存中;

如果是header信息就直接放在程序缓存中;

当页面执行到最后会把ob缓存中的数据放到程序缓存后面然后一起输出到浏览器

代码示例:

ob<a href=缓存" src="http://www.icultivator.com/wp-content/uploads/2014/03/ob缓存.png?watermark/1/image/aHR0cDovL3N0YXRpYy5uYmxhLmNuLzEzMTAxMTYxMDktMi5wbmc=/dissolve/100/gravity/SouthEast/dx/10/dy/0" width="442" height="194" />

flush()?//将程序缓存强制刷新到浏览器缓存

flush

上面这段代码说明了浏览器缓存的存在

2)使用模板技术实现(正则表达式)

五、页面静态化实战

第一次访问查询数据库并把数据写到缓存文件中:

静态化实战

以后访问先判断该文件是否存在,如果存在直接访问:

静态化实战2

缺点:修改文章后不能更新

改进方案:

1)设计30s,30s内不修改,超过30秒就更新

2)上面的解决方案仍然有延时,如果我们希望静态化没有延时的话就应该使用模板替换技术来实现,具体而言就是在新增或修改文章时替换静态页面内容为最新内容

静态化改进

静态化的缺点:

1)生成的大量静态页面占用磁盘空间

以下几种网站不建议使用真静态:

实时性要求高的网站;数据量大,查询一次后以后很少查询;不愿意被搜索引擎爬取的页面或网站

六、页面伪静态

希望页面有利于SEO又不想静态化页面,可以考虑使用伪静态。

实现方式:

1)使用正则表达式完成

2)使用apache自带的rewrite模块

在实际开发中,实现伪静态用的更多的是rewrite机制,但是这仍然是以正则表达式为基础的。

页面伪静态

Apache配置文件中配置:

apache配置

上面配置的时候都要去修改http-vhost文件,但是如果没有权限,我们也可以通过修改相应目录下的.htaccess文件来实现。

htaccess

伪静态的实际运用:

1)在一个项目中有两个文件夹,publicprivatepublic可以被所有人访问,而private只能被自己访问,怎么实现?

private文件夹下配置.htaccess:

Order?deny,allow
Deny?from?all
Allow?from?127.0.0.1

缺点:没有办法去控制,所有资源都被禁止访问,不够精细化

优化方案(防盗链实例)

防盗链

更多规则:

更多规则

大型网站提升访问速度关键技术 —— 页面静态化
分享到:
大型网站提升访问速度关键技术 —— memc...
大型网站提升访问速度关键技术 —— memcached1.基本概念和原理 Memcached是一个高性能的分布式的内存对象缓存系统。实际上就是在内存里维护的巨大的hash表。 Memcached的操作使用: 2.Telnet操作memcached 3.PHP操作memcached 1)Memcache 2)Memcached 4.memcached机制 memcached是基于c/s的架构,基于libevent的事件...
Apache负载均衡设置方法: mod_proxy
Apache负载均衡设置方法: mod_proxy 一般来说,负载均衡就是将客户端的请求分流给后端的各个真实服务器,达到负载均衡的目的。还有一种方式是用两台服务器,一台作为主服务器(Master),另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时,立即切换到备份服务器,以提高系统的整体。    第一次看...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……