大型网站 + 静态页面
一、大型网站的判断
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 表示是一个目录
当文件存在则访问,不存在则访问指定的页面
RewriteCond %{REQUEST_FILENAME} ! –f
添加重写的条件,判断referer头里边是否有本网站的语句,如果没有则不能进行访问
RewriteCond %{HTTP_REFERER} !localhost NC (!WWW.buy.com NC)
RewriteRule 重写规则
如: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 // 当请求某个静态页面的时候,将其进行重定向
大型网站 + 静态页面相关推荐
- 大型网站的页面静态化
目录 前言 方案一:网页静态HTML化 伪静态 布局样式模板化 应用层nginx 分发层nginx 前言 我们小伙伴们在访问淘宝.网易等大型网站时有没有考虑到,网站首页.商品详情页以及新闻详情页面是如 ...
- C# 网站静态页面生成器 for 多线程版
摘要:该生成器是用于放置于服务器上的一个小程序,用于生成站点中需要静态化的页面生成.我写c/s程序不多,所以本程序可能会有些小的bug.还望高手多多指教! 内容: 首先让大家看看该程序的几个流程界面 ...
- 中大型网站静态资源优化及存储
为什么80%的码农都做不了架构师?>>> 静态资源优化: 合并 减少http请求有这样几个优点: (1) 减少DNS请求所耗费的时间 (2) 减少服务器压力(CPU,IO) ( ...
- 大型电商网站的页面静态化方案是如何支撑亿级流量的?
前言 我们小伙伴们在访问淘宝.网易等大型网站时有没有考虑到,网站首页.商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢? 很多小伙伴们就会提出他们都采用了静态化的方案,这样用户请 ...
- 大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)
大型网站关键技术介绍 1. pv值(page views),访问量大 带来问题 a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片) b. 并发量,同时访问网站的人 ...
- 关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)
在存储瓶颈的 开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据 库的网站是很难做到通过增加web服务器数 ...
- 网站改成静态页面打不开_稳定网站排名的基本条件 - 最蜘蛛池外推快速收录
原出处:最蜘蛛池 原文链接:稳定网站排名的基本条件 - 最蜘蛛池 下面最蜘蛛池小编为大家详细介绍下稳定网站排名的基本条件. 1.服务器稳定性 网站服务器运行稳定是百度排名的基础,网站经常打不开排名肯定 ...
- 网站提速-页面静态化(2)
第一篇.页面静态化 页面静态化概念 我们大多数情况下是直接访问php文件,php脚本在服务器端执行并 返回信息,对于一些大型的网站,访问量很大,频繁的动态操作和操作 数据库会加重服务器的负担.在实际开 ...
- 网站优化---页面静态化技术
一: 首先先区分一下动态页面和静态页面的区别 动态文件:PHP脚本.Java脚本等 动态文件的执行过程:词法.语法分析 -> 编译 -> 渲染输出 静态文件:HTML文件 从加载速度上可以 ...
- 关于大型网站技术演进的思考--网站静态化处理
转自: 夏天的森林blog:(系统设计与架构(47)) 一 在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大 规模的并发访问量,如果是一个动态的网站, ...
最新文章
- 洛谷 1373 小a和uim之大逃离
- Java面试没过_Java面试中遇到的坑【填坑篇】
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)
- OJ1025: 最大字符
- mysql 时间序列可视化工具_mysql – 从from到to条目创建时间序列
- Javascript学习历程之事件
- Python-程序模块化
- 使用ORB_SLAM2的方式进行特征检测和提取
- Linxu 输入子系统分析
- 【题解】保安站岗[P2458]皇宫看守[LOJ10157][SDOI2006]
- 基于hydra的ssh密码的暴力破解
- 简易记事本android代码,Android实现简易记事本
- 黑苹果VoodooHDA声卡驱动
- Photoshop下载
- git的使用、ssh生成、github、Git分支操作
- springboot后台搭建及登录注册接口编写
- 使用C语言求斐波那契(Fibonacci)数列的第n项
- 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
- win10专业版变远程服务器
- 【阶段1】【定理证明】二项式定理证明
热门文章
- kaptcha生成自定义图片验证码
- C++大写字母转小写字母
- linux虚拟机克隆mac地址冲突,虚拟机下linux迁移造成MAC地址异常处理办法(示例代码)...
- 硬派健身——健身先健脑
- Thinkpad E420移除白名单
- 人生终归平淡,转:为什么我们对平凡的人生深怀恐惧
- python turtle后退_Turbot与python教程-实现后退
- [面试题]100层楼丢玻璃球,一旦超过某层就会破,你只有两个球。
- deleteRow() 连续删除多行
- easyui datagrid deleteRow(删除行)的BUG!