一、大型网站的判断
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 // 当请求某个静态页面的时候,将其进行重定向

大型网站 + 静态页面相关推荐

  1. 大型网站的页面静态化

    目录 前言 方案一:网页静态HTML化 伪静态 布局样式模板化 应用层nginx 分发层nginx 前言 我们小伙伴们在访问淘宝.网易等大型网站时有没有考虑到,网站首页.商品详情页以及新闻详情页面是如 ...

  2. C# 网站静态页面生成器 for 多线程版

    摘要:该生成器是用于放置于服务器上的一个小程序,用于生成站点中需要静态化的页面生成.我写c/s程序不多,所以本程序可能会有些小的bug.还望高手多多指教! 内容: 首先让大家看看该程序的几个流程界面 ...

  3. 中大型网站静态资源优化及存储

    为什么80%的码农都做不了架构师?>>>    静态资源优化: 合并 减少http请求有这样几个优点: (1) 减少DNS请求所耗费的时间 (2) 减少服务器压力(CPU,IO) ( ...

  4. 大型电商网站的页面静态化方案是如何支撑亿级流量的?

    前言 我们小伙伴们在访问淘宝.网易等大型网站时有没有考虑到,网站首页.商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢? 很多小伙伴们就会提出他们都采用了静态化的方案,这样用户请 ...

  5. 大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)

    大型网站关键技术介绍 1. pv值(page views),访问量大 带来问题 a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片) b. 并发量,同时访问网站的人 ...

  6. 关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)

    在存储瓶颈的 开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据 库的网站是很难做到通过增加web服务器数 ...

  7. 网站改成静态页面打不开_稳定网站排名的基本条件 - 最蜘蛛池外推快速收录

    原出处:最蜘蛛池 原文链接:稳定网站排名的基本条件 - 最蜘蛛池 下面最蜘蛛池小编为大家详细介绍下稳定网站排名的基本条件. 1.服务器稳定性 网站服务器运行稳定是百度排名的基础,网站经常打不开排名肯定 ...

  8. 网站提速-页面静态化(2)

    第一篇.页面静态化 页面静态化概念 我们大多数情况下是直接访问php文件,php脚本在服务器端执行并 返回信息,对于一些大型的网站,访问量很大,频繁的动态操作和操作 数据库会加重服务器的负担.在实际开 ...

  9. 网站优化---页面静态化技术

    一: 首先先区分一下动态页面和静态页面的区别 动态文件:PHP脚本.Java脚本等 动态文件的执行过程:词法.语法分析 -> 编译 -> 渲染输出 静态文件:HTML文件 从加载速度上可以 ...

  10. 关于大型网站技术演进的思考--网站静态化处理

    转自: 夏天的森林blog:(系统设计与架构(47)) 一 在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大 规模的并发访问量,如果是一个动态的网站, ...

最新文章

  1. 洛谷 1373 小a和uim之大逃离
  2. Java面试没过_Java面试中遇到的坑【填坑篇】
  3. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)
  4. OJ1025: 最大字符
  5. mysql 时间序列可视化工具_mysql – 从from到to条目创建时间序列
  6. Javascript学习历程之事件
  7. Python-程序模块化
  8. 使用ORB_SLAM2的方式进行特征检测和提取
  9. Linxu 输入子系统分析
  10. 【题解】保安站岗[P2458]皇宫看守[LOJ10157][SDOI2006]
  11. 基于hydra的ssh密码的暴力破解
  12. 简易记事本android代码,Android实现简易记事本
  13. 黑苹果VoodooHDA声卡驱动
  14. Photoshop下载
  15. git的使用、ssh生成、github、Git分支操作
  16. springboot后台搭建及登录注册接口编写
  17. 使用C语言求斐波那契(Fibonacci)数列的第n项
  18. 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
  19. win10专业版变远程服务器
  20. 【阶段1】【定理证明】二项式定理证明

热门文章

  1. kaptcha生成自定义图片验证码
  2. C++大写字母转小写字母
  3. linux虚拟机克隆mac地址冲突,虚拟机下linux迁移造成MAC地址异常处理办法(示例代码)...
  4. 硬派健身——健身先健脑
  5. Thinkpad E420移除白名单
  6. 人生终归平淡,转:为什么我们对平凡的人生深怀恐惧
  7. python turtle后退_Turbot与python教程-实现后退
  8. [面试题]100层楼丢玻璃球,一旦超过某层就会破,你只有两个球。
  9. deleteRow() 连续删除多行
  10. easyui datagrid deleteRow(删除行)的BUG!