mysql静态页面_大型网站+静态页面

一、大型网站的判断

Pv(page visitor), uv(unique visitor), 独立的ip

二、大型网站带来的问题

大的访问量,大流量,海量的数据存储

三、大访问量的解决方案

采用分层架构,负载均衡的方式(软件:lvs/nginx,硬件:f5-bigip)

负载均衡的策略:

1)轮询:负载均衡器把请求轮流转发给web服务器

2)最少链接:负载均衡把请求转发给最空闲的服务器

3)ip哈希: 负载均衡始终将请求的始终给同一服务器

四、大流量问题的解决方案(带宽)

1)在web服务器端(Apache),配置压缩,减少数据传输的数据量(开启apache的算法模块mod_gzip和mod_deflate,level级别推荐为6压缩速度和质量均衡)

2)合并文件(css,js,img)减少http的请求(图片一次请求过来)

3) 把比较占用资源的(或不同功能的)单独部署服务器用作分流(京东)

五、大存储的解决方案

1、使用缓存技术(目的:减少对数据库的查询次数)

硬盘的缓存(页面静态化):将动态的页面转换成静态的页面,提高了访问的速度

内存缓存:把数据缓存到服务器端的内存中,下次的访问直接从内存中读取

2、mysql的优化

六、页面静态化

1、分类:真静态和伪静态

真静态:真实的html(不操作数据库执行速度快,比较安全不接受参数,利于SEO)

伪静态:表面的html(操作数据库,执行速度慢,不接受参数利于安全和SEO)

2、实现技术(在实际中我们会经历三个缓存:ob缓存à程序缓存à客户端缓存)

真静态化: 使用ob缓存技术,缓存内容是相应的主体数据【响应内容】

伪静态化:通过web服务器的重写机制(index.phpàindex.html)

3、ob缓存

在php.ini中进行配置Output_buffering:输出缓存(对所有的页面有效),缓存的是主体的数据(响应内容)

注:如果开启了ob缓存,主体数据(非头信息)首先会缓存到ob缓存区内,头信息要存储到程序的缓存,当ob缓存的数据刷新(移动)到程序的缓存中,程序缓存再输出到浏览器的缓存中,最后输出内容

4、程序缓存

该缓存必须存在,是无法关闭的,缓存着【响应头和响应内容】

七、OB缓存

Ob_start()  // 只对本页面有效,而对其他页面是没有效果的

Ob_get_contents()             // 获取响应主体中的数据(执行后的代码)

Ob_clean()                         // 清除ob缓冲中的内容后不关闭ob缓存

Ob_end_clean()                 // 清除ob缓存中的内容后将关闭ob缓存

Ob_flush()                         //将ob缓存中的数据移动到程序缓存中,并关闭ob缓存

Ob_end_flush()                 // 不关闭缓存

八、静态化页面的实现

通过ob_get_contents()和file_put_contents()将内容写入到指定的.html中实现了页面的静态化

扩展设置文件的生存周期:

File_exsits(),                 // 查看静态文件是否生成

Filetime()                      // 查看文件的最后修改的时间,判断是否过期

九、在Tp和smart模板中的应用

Smarty

$smarty->cache_dir = “./cache/";         //缓存目录

$smarty->caching = true;                       //开启缓存,为flase的时侯缓存无效

$smarty->cache_lifetime = 60;             //缓存时间(单位 秒)

if(!$smarty->isCached(’01.html’)){

//判断模板文件是否被缓存。

}

ThinkPHP

1)在总的配置文件中config开启静态缓存 ‘HTML_CACHE_ON’=>true;

2)在各自的配置文件config中进行配置

‘HTML_FILE_SUFFIX’=> ’.shtml’     // 设置静态文件的缓存文件后缀

‘HTML_CACHE_RULES’=> array(

# Index控制器的index方法,静态页面的缓存路径为Home/index

‘Index:index’=>array(‘Home/index’,3600),

# {id}为变量,3600为缓存周期

‘Index:detail’=>array(‘Home/Goods/goods-{id}’,3600),

)

十、页面静态化的选择

1、网站实时性要求不高的网站,是不要使用静态(真静态和为静态均不使用)

2、网站的访问量较小、没必要使用静态化技术

3、如果数据项目不多,但是访问频率极大,建议使用真静态,如新浪的新闻频道

4、如果数据项目海量,使用真静态会生成海量的html静态页面,建议使用伪静态

5、一个大型网站中、静态化技术是综合使用的(新闻:真静态,基金:伪静态,后台:无静态)

十一、网站的并发测试工具

1、在Apache的安装目录中存在有ab.exe一个自带的程序来进行服务器的并发测试

ab     –n  50  –c       50  http://localhost/test.php

-n  num             总的访问量

-c  customer                并发量

url 对某个网页进行测试

2、如何调整apache的最大并发量

1)  apache默认情况下最大的并发量为150

3、调整Apache的并发量首先应该查看Apache的MPM(多进程处理模块,处理多并发的方式)【 httpd  -l 】

通常处理多并发的方式有:

worker 工作者模式

perfork 预派生模式

winnt   windows下的默认模式

#       worker模块占用的内存较小,对于流量较大的网站来说,是一个比较好的选择

#    profork虽然占用较大的内存,并且prefork内存使用设计较为优秀,可以在很多无法提供debug的平台上进行自我除错,同时prefork方式速度要稍高于worker ,然而它需要的cpu和memory资源也稍多于woker。

十一、伪静态化

1、   伪静态化通过修改Apache的配置,按照一定的规则将静态化请求转化为动态化

2、   正则表达式

匹配模式:

a)          U:非贪婪匹配

b)         M:多行模式(会将\n后的部分当做新的一行来对待)

c)          S:单行模式

d)         I    不区分大小写

e)          G:全局查询

f)          [\x{4e00-\x{9fa5}]/u         以utf-8来进行匹配中文

3、rewrite(重写规则)

将一个URL重写到另一个URL请求上

1)配置httpd.conf中的开启rewrite(重写模块)

2)使用分布式文件配置. htaccess文件(ed来进行创建)

3)在将站点中的allowOverride all(支持分布式文件配置)

4)在 . htaccess中配置重写规则

RewriteEngine  on   开启重写引擎

Rewrite rule              xx.html  à  xx.php

4、   重写规则的配置详情(.htaccess)

RewriteEngine  on开启重写引擎

RewriteCond重写条件(在什么情况下,执行什么)  修改服务器变量

-f   表示是一个文件。

-d   表示是一个目录

[NC]:  不区分大小写

[OR]:当出现多个条件时,默认为并且的关系,条件或者的关系下可以使用OR来表示!

# 当文件存在则访问,不存在则访问指定的页面

RewriteCond   %{REQUEST_FILENAME}         ! –f

# 添加重写的条件,判断referer头里边是否有本网站的语句,如果没有则不能进行访问

RewriteCond  %{HTTP_REFERER}    !localhost [NC]   (!WWW.buy.com [NC])

RewriteRule重写规则

[QSA]: 在目标地址已经具有get参数时,会将真实的请求get参数追加在后边

如:abc.php à cde.php?type=sport [QSA]     (重写规则)

当该句允许使用[QSA]时,可以在该句的后边追加参数来进行接收

abc.php?name=dasheng&age=500

此时接收的参数为:array(‘type’=>’sport’,’name’=>’dasheng’,’age’=>50);

常用的规则:

RewriteRule \.(jpg | jpeg | bmp | gif )  -[F]                             // 禁止采图

RewriteRule \.(jpg | jpeg | bump | gif )  110.gif                         // 当采图时进行重定向

RewriteRule goods-(\d+) \. html   à     goods.php ? id = $1  // 当请求某个静态页面的时候,将其进行重定向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值