3大型网站优化下午笔记图解_第1页
3大型网站优化下午笔记图解_第2页
3大型网站优化下午笔记图解_第3页
3大型网站优化下午笔记图解_第4页
3大型网站优化下午笔记图解_第5页
已阅读5页,还剩25页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大型提速大型?pv(page view) :多少独立 IP 来这个一天 各个页面被的总和(独立访客千万级) ,独立 IP就是有, uv( unique visitor)同时人数(几十万)-吞吐量大型会带来什么问题?如何处理高并发解决方法-对的架构重整,分层.,服务器集群 数据表变大(海量数据 T) 1024G常见的解决方法:.5.6.7.表的设计要合理创建合理索引(主键索引,唯一索引,普通索引,全文索引,分表技术(水平分割,垂直分割)空间索引)对的配置优化(my.ini)优化 SQL 语句编写硬件升级过程, 触发器1.尽量减少对数据库查询缓存技术(memcached,redis)

2、 :就是如果有一些数据,经常使用,客户以考虑不要每次到数据库去操作,而是放入内存,进行操作.使用静态化技术2.分类: 真静态 把一个动态页面,生成对应一个静态页面 html,次处理,在形式上是一个静态页面,本身还是一个动态页面伪静态技术即对 url 进行一介绍一下静态化技术的原理h介绍几个和静态化相关的概念静态/index.html特点 : 1.用 SEOh特点: 1.他不会操作数据库,速度快. 2.他不接收参数,所以没有 sql 注入的安全问题3. 利址/news.?id=23往往会操作数据库,速度慢 2,会接收参数,可能被注入 3. 不利用 SEOh h伪静态&class=sport&id

3、=2 通常公司更希望这个-sport-id2.html特点: 1.形式是静态,但是没有在服务器对应一个真正的 html 页面 2. 往往还是要操作数据库 3. 利用 SEO用户登录验证.ab.exe n 请求总次数 -c 并发数 请求页面的 url进入到 ab.exe 目录举例:cmdab.exe n 10000 c 100:如何配置 apache 最大的并发数首先一个概念 MPM (多路处理模块), apache 使用怎样的形式来处理并发.常见:1.2.3.perfork worker:winnt :预处理进程方式工作者模式在 windows 使用.一个原理图:具体的案例,如何把的 apac

4、he 的最大并发数配置成 1000 个. 首先你确实你的 apache 的 mpm 方式.cmdhttpd.exe l这里就看 mpm_.c 这个 修改 httpd.conf 文件是什么, 就是什么# Servool management (MPM specific)Include conf/extra/httpd-mpm.conf 修改 httpd-mpm.confThreadsPerChild MaxRequestsPerChild1000# 最大并发数0# 最多处理多少次请求. 0 表示不限制 重启 apache, 测试说明: 这里配置到多大,不一定就可以支撑这么大的并发,考虑到本身 a

5、pache所在机器性能, 如果你系统是 linux/unix ,配置 perfork因为在 linux 下,一般说采用的 MPM 是 perfork 模式,看看如何配置.StartServers MinSpareServers MaxSpareServers MaxCnts MaxRequestsPerChild5510150#并发量0#一个进程对应的线程数,对 worker 更用.给大家一个合理的建议配置. 对大部分,中型,配置:StartServers MinSpareServers MaxSpareServers ServerLimitMaxCnts5#预先启动51015001000#最

6、大空闲进程#用于修改 apache 编程参数#最大并发数MaxRequestsPerChild 0如果你的pv 值百万ServerLimitMaxCnts25002000#用于修改 apache 编程参数#最大并发数练下.SEO 小技巧1.的 url 不要过长,不要过 255 字节2.3.在静态页面,不要带动态参数在网页中要写 meta 信息 , keyword 必须写, description培训机构,进来框架、ECShop、dedecms 等4.5.6.在前端,不要使用框架 frame frameset , 但是可以在的使用尽量使用背景图.(背景利于安全,同时节省流量),利用 seo页面静

7、态化先讲真静态, 实现真静态可以 通过完成.的缓存机制(OB 缓存), 还可以通过替换模板缓存机制-OB知识点: 当浏览器去请求一个页面时,他可能经历 3 个缓存,OB 缓存 程序缓存 浏览器缓存.案例:?echo o100;header(content-type:text/html;charset=utf-8);1.在5.2 版本,默认情况下 ob 缓存是关闭., 在5.3 班默认打开2.ob 缓存程序员可以指定打开,或者关闭打开: 在.ini 文件中 output_buffering = 4096 直接在文件中,使用ob_start();关闭:和打开相反操作3.4.5.如何你打开 ob 缓

8、存,那么 echo 的数据首先放入到 ob 缓存.header 头信息,是直接放入到程序缓存执行完毕后,ob 缓存的内容会被刷新到程序缓存,并由 apache 通过 http 响当应方式返回给用户(浏览器)执行过程中,程序缓存是一直有的,不能关闭.6.综合案例:Flush 函数,是把程序缓存的数据,刷新到浏览器缓存.?echo str_repeat( ,1024); for($i=0;$i设计阶段-编码阶段-测试阶段-实施阶段.1.界面:2.设计(UML 图,表,文件(关系)MVC 编写最好,但是简化.MVC: m(m模型) v(view 视图) c(controller控制器) MVC: 强

9、制要求程序员把数据的输入,数据的处理,数据显示,分开画了一个简易的框架图3.创建数据库表 news 表create table news(idunsigned primary key auto_increment, /*id 号*/title varchar(128) not null default , /*标题*/content varchar(256) not null default , /*内容*/filename varchar(32) /*的对应的静态页面文件名*/) engine=MyISAM charset utf8添加测试数据insertinserts (title,con

10、tent) values(s (title,content) values(o1,o2,你好);你好);4.编码showNews.newsList.代码: newsList.showNews.分析上面解决方法是:,每次查看,都会查询数据库,这样速度慢.1.使用 ob 缓存,在用户第一次的时候,就生成对应的静态页面,当用户第二次走码: 关键代码:时候,就直接返回该静态页面.showNews.增加一端码增加了另外一段代码:思考: 如果有人修改数据库解决方法内容,那么看不到新的内容.: 增加一句搞定. 设置一个缓存有效时间,比如 30s , 在 30 s 内,我不去修改静态页面.,这样可以解决部分问

11、题,但是不够好, 1. 有时间延时 2. 还是每隔 30 还要查询数据库.:如果添加一个时,就直接生成对应的静态页面,提供一个添加修改一个的界面,当,就修改数据库的同时,去修改静态页面代码: newsList.newion.addNews.htmlnews.tplshowNews.到此,通过改进,可以完成用户添加时,立即创建一个对应的静态页面,同时,用户可以直接一会同学做静态页面.1.2.3.,并实时的修改对应的静态页面(同时修改数据库)完成修改在添加时,生成的静态页面,用 把某一天的静态页面放入到一个文件夹首页面能否静态化.一些好的开源项目:http:如何对首页面静态化1.2.把管理这个功能

12、放到, 给用户只提供一个浏览的能够.在实际项目中,首页的静态化是怎样完成, 是管理员在点击更新首页来完成.系统的程序结构改动,改成前.示意图:代码:manage.查询|管理a href=newsList.|更新首页|添加addNews.html标题在添加时,就同时生成一个对应的页面(比如你设计好的一个内容显示form action=newion. method=t标题内容type=reset value=重新填写newion.?/这是一个处理的控制器,增加,删除,修改./$type=empty($_GETtype)?if(empty($_Ttype)|empty($_Ttitle)|empty

13、($_Tcontent)die(参数不对);if($_Ttype=add)/添加,获取title,content$title=$_$content=$_Ttitle;Tcontent;$con=if(!$con)_connect(localhost,root,root);die(连接失败);_select_db(newsdb);$sql=INSERTs values(null,$title,$content,);if(_query($sql,$con)/入库ok,生成对应的静态页面.$id=_insert_id();$html_file_name=news-id.$id.html;$html_

14、file=fopen(./.$html_file_name,w);/基本功$tpl_file=fopen(news.tpl,r);/c/ c+/我一行一行的文件,然后替换占位符.while(!feof($tpl_file)/一行.$str=fgets($tpl_file);/替换,如果有%title%, 替换成实际 $title ,/如果有%content%, 替换成实际 $content ,$str=str_replace(%title%,$title,$str);$str=str_replace(%content%,$content,$str);/写回到 fwrite($html_file

15、,$str);/关闭文件 fclose($html_file); fclose($tpl_file); ob_start();/更新该对应的静态页面文件路径的操作.header(content-type:text/html;charset=utf-8);echo 恭喜你,添加成功!点击返回管理页面;/同时生成的首页.include newsList.;else if($_Ttype=update)/.news.tpl 【将来复杂度,这里体现】%title%title%content%newsList.?header(content-type:text/html;charset=utf-8);/

16、查询数据库取出信息, 注意,这里使用 mvc 就用db 工具 操作$con=if(!$con)_connect(localhost,root,root);die(连接失败);_select_db(newsdb);$sql=SELECT * FROM news;$res=_query($sql,$con);/使用ob 缓存把页面保存到 index.html ob_start();echo ;echo 列表;echo ;echo id标题查看详情;while($row=echo_fetch_assoc($res)$rowid$rowtitle查看详情;echo ;$str=ob_get_conte

17、nts();file_put_contents(./index.html,$str);ob_clean();echo 首页更新成功!返回管理页面;页面真静态的优点和缺点优点: 1. 因为动态页面转成静态页面,这样就不用操作数据库,从而提高速度3.利于 SEO 3. 安全,不接收参数.缺点: 占用磁盘空间大, 还有一定记住,在生成静态页面时,面.须分目录来存放静态页1.2.哪些不适宜用真静态?实时性要求高,页面变化频繁, 基金数据海量,同时生成的静态页面,只用一次,以后不用 (国家学历查询 ,电信,移动查询话费系统)不愿意被 SEO3.伪静态:下一个定义: 所谓伪静态就是,从地址形式上看是一个静

18、态面存在,它任然会查询数据库.什么时候用: 想 SEO, 但是有不希望生成静态页面,可以使用,但是实际上没有这个静态页比如:说明: 比如希望上面的 url 变成实现伪静态有两种方法:在程序中实现-使用正则表达式 js使用 apache 的 rewrite 机制.-使用正则技术看一段代码:等价这里用代码完成了使用,说明在中如何使用正则表达式!有局限性/2. 使用正则表达式.$reg=/(0-9+),(0-9+),(0-9+).html$/;if(preg_match_all($reg,$_SERVERPATH_INFO,$res)echo ; pr _r($res); echo ;echo a

19、的参数值=.$res10. b 的参数值=.$res20. c 的参数值.$res30;elseecho 你的参数有误;/回顾一下正则$str=ajkdlajfklajkf8900alfdklsajfdl7890jak;lfdjsaf7899;/从$str 把 4 个连续的数 查出./正则表示式$reg=/(dd)d(d)/;/在中使用正则检索的函数 preg_match preg_match_all/$reg: 正则表达式 $str: 对哪个串操作 $res 存放结果/函数特点是,找到一个结果,就退出/preg_match($reg,$str,$res);/*对 preg_match_all

20、 结果说明$reg00 存放的第一个匹配到的结果.$reg0n 存放的第 n+1 个匹配到的结果$regnm: n0 情况下, n=1 m=1这个$regnm 是第 m+1 个匹配到的结果的第 n 个子表达式的内容*/$str=ajdlajflakfdsnaljflsajf;lsaf;/从$str 查询这样数/正则表示式-yzy-/$reg=/(d)12-(d)22-(d)32/;$reg=/./s;$str=lakjfd;lakf;lsakjfdl 中国12367;/请统计$str 有多少个汉字,多少个字母,多少数字/多少个字母$reg=/a-z/i;$reg2=/0-9/;$reg3=/x

21、4e00-x9fa5/iu;preg_match_all($reg,$str,$res); echo ;pr_r($res);echo ;echo 字母个数=.count($res0);preg_match_all($reg2,$str,$res);echo 数字个数=.count($res0);preg_match_all($reg3,$str,$res);echo 汉字个数=.count($res0);$str=888-999-000ajfdklsa;$reg=/(d)12-(d)22-(d)32/;preg_match_all($reg,$str,$res); echo ;pr_r($r

22、es);echo ; 1. 编程语言都可以使用正则技术,但是不是完全相同.2. 如果在中使用正则表达式,请一律使用 括起来.补充讲解一个正则环视技术参考 正则高级环视.doc代码 reg2.?$str=366677aaaa12;$reg=/(?=a-z)a-z0-9+$/i; /顺序肯定环视 preg_match_all($reg,$str,$res);echo ; pr_r($res);echo ;$str=industry industruy adflakfl industries industry;$reg=/industr(?:y|ies)/i; / /industry|industr

23、ies/ preg_match_all($reg,$str,$res);echo ;pr_r($res); echo ;$str=Windows 3.1 Windows 2000 Windows xp;$reg=/Windows (?!95|98|NT|2000|xp)/i; preg_match_all($reg,$str,$res);echo ; pr_r($res);echo ;$str=aa46aa12;$reg=/(?!a-z)0-9+$/i;/顺序否定环视 preg_match_all($reg,$str,$res);echo ; pr_r($res);echo ;使用 apach

24、e 的 rewrite 机制来实现伪静态的操作案例:/news-music-id23.html我希望请求上面 url 地址,等价于请求/news.?type=muisc&id=23原理示意图:操作步骤 修改 httpd.conf文件,配置虚拟主机# Virtual hostsInclude conf/extra/httpd-vhosts.conf 修改 httpd-vhosts.conf , 配置虚拟主机Root C:/myenv/apache/htdocs/sic2 ServerName 在 c:/windows/system32/drivers/etc/hosts 配置和ip 关系 测试一

25、下,如果直接news.能否ok! 配置 rewrite , 修改 httpd.conf #加载 rewirte 模块LoadModule rewrite_module modules/mod_rewrite.so 最后的配置情况如下.Root C:/myenv/apache/htdocs/sic2ServerName#Directory 段 主要用于配置用户对这个目录的权限.# 配置欢迎界面,配置# 配置重写规则.错误 404 403 500#这里可以指定权限.#deny from all #设置欢迎页面#DirectoryIndex index.html#列出的目录目录结构#options

26、+Indexes#不让列出 #options none ErrorErrorError的目录结构404 /404.html403 /403.html500 /500.html重写规则,这里一定要如果配置重写规则,#配置的#必须在httpd.conf 文件中 加载 rewrite 模块,否则 apache 无法启动RewriteEngine OnRewriteRulenews-(a-z+)-id(d+).html$news.?type=$1&id=$2在某些情况下,程序员不能直接修改 httpd-vhosts.conf,就可以把重写规则放到的目录下 , 文件名叫 .htacs在 httpd-vh

27、osts.conf 内容是:Root C:/myenv/apache/htdocs/sic2ServerName#Directory 段 主要用于配置用户对这个目录的权限.# 配置欢迎界面,配置# 配置重写规则.错误 404 403 500#这里可以指定权限.#deny from all #设置欢迎页面#DirectoryIndex index.html#列出的目录目录结构#options +Indexes#不让列出 #options none ErrorErrorError的目录结构404 /404.html403 /403.html500 /500.html#这里配置表是可以 allowo

28、verride all目录下的 .htacs在根目录下 .htacs 文件#配置的重写规则,这里一定要如果配置重写规则,#必须在httpd.conf 文件中 加载 rewrite 模块,否则 apacheRewriteEngine On无法启动RewriteRulenews-(a-z+)-id(d+).html$news.?type=$1&id=$2上面配置还可以写成这样在 httpd-vhosts.conf 内容是:Root C:/myenv/apache/htdocs/sic2ServerName#Directory 段 主要用于配置用户对这个目录的权限.# 配置欢迎界面,配置# 配置重写

29、规则.错误 404 403 500#这里配置表是可以 allowoverride all目录下的 .htacs在.htac#这里s 中.可以指定权限.#deny from all #设置欢迎页面#DirectoryIndex index.html#列出的目录目录结构#options +Indexes#不让列出 #options none ErrorErrorError的目录结构404 /404.html403 /403.html500 /500.html#配置的重写规则,这里一定要如果配置重写规则,#必须在httpd.conf 文件中 加载 rewrite 模块,否则 apache 无法启动R

30、ewriteEngine OnRewriteRulenews-(a-z+)-id(d+).html$news.?type=$1&id=$21.注意事项:在 权限.如果的每个目录下,都可以写.htacs 文件,这样利于更加精准的控制2.3.4.的某个目录没有 .htacs 文件,则他的权限以父目录的 .htacs 为准#如果文件目录在 apache 目录外面,注释掉 optinos 则,不能列表,因为没有继承关系了另外记住,如果配置了 RewriteEngine 则 Options 就注销掉,直接使用其父目录的 OptionsIndexes SysLink.#如果不注销,则发现,不管你哪个页面,都是 403错误,原因是和父目录配置,#如果一定写,就不能写成 options indexes 而是和父目录一样 options indexes sysliink., 简单一句话,就是使用 rewrite功能,options 选项.就不要写给 20min 练习现在可以实现伪静态页面了,(上机练习题!)希望把用户输入的你的名字中方法.你的名字/view-23.htmlulr 重新被 apache 替换成/index.?action=view&id=23 这个规则应当怎样写? 采用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论