php面试专题---22、网站优化 总结
php面试专题---22、网站优化 总结
一、总结
一句话总结:
主要从前端、后端、数据库、资源四个方面开始发散
前端
浏览器缓存和数据压缩
前端优化(减少HTTP请求次数)
资源
流量优化(防盗链处理)
CDN加速
独立图片服务器的部署
后端
动态语言静态化
动态语言的并发处理
Web服务器的负载均衡
数据库
数据库缓存
MySQL数据库层的优化
1、网站前端优化方案大纲?
浏览器缓存和数据压缩
减少HTTP请求次数
2、网站资源优化方案大纲?
流量优化(防盗链处理)
CDN加速
独立图片服务器
3、网站后端优化方案大纲?
动态语言静态化
动态语言的并发处理
Web服务器的负载均衡
4、网站数据库优化方案大纲?
数据库缓存
MySQL数据库层的优化
5、防盗链Referer实现方法 的注意点?
|||-begin
Nginx 模块ngx_http_referer_module 用于阻挡来源非法的域名请求
Nginx指令valid_referers,全局变量$invalid_referer
valid_referers none | blocked | server names | string..… location ~* \.(jpg|png|gif|jpeg)$ {
valid_referers none blocked www.baidu.org *.baidu.org; #有效referers
if ($invalid_referer) { #无效referer怎么办
rewrite ^/ http://www.baidu.org/403.html; # 如果有盗链的情况就使用url重写到错误页面或者错误图片
}
}
|||-end
none:“Referer"来源头部为空的情况
blocked:“Referer"来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http:/或者https://开头.
server_names:“Referer"来源头部包含当前的server_names
6、减少HTTP请求的方式?
图片地图:使用<map><area></area></map>标签。图片地图允许你在一个图片上关联多个URL。目标URL的选择取决于用户单击了图片上的哪个位置。
CSS Sprites:SS Sprites中文翻译为CSS精灵,通过使用合并图片,通过指定css的backgroud-image和backgroud-position来显示元素。
合并脚本和样式表:使用外部的js和css文件引用的方式,因为这要比直接写在页面中性能要更好一点。把多个脚本合并为一个脚本,把多个样式表合并为一个样式表
图片使用Base64编码减少页面请求数:采用Base64的编码方式将图片直接嵌入到网页中,而不是从外部载入
7、如何启用浏览器缓存?
在服务器(比如nginx)中设置Pragma,Cache-Control,Expires等
8、Nginx如何配置gzip压缩?
直接在nginx的配置的location中加上这句话即可:gzip on|off; #是否开启gzip
gzip on|off; #是否开启gzip
gzip_buffers 324K|168K #缓冲(在内存中缓冲几块?每块多大)
gzip_comp_level[1-9] #推荐6压缩级别(级别越高,压的越小,越浪费CPU计算资源) gzip_disable#正则匹配UA什么样的Uri不进行gzip
gzip_min_length 200#开始压缩的最小长度
gzip_http_version 1.0|1.1#开始压缩的http协议版本
gzip_proxied#设置请求者代理服务器,该如何缓存内容 gzip_types text/plain application/xml#对哪些类型的文件用压缩如txt,xml,html,css
gzip_vary onloff#是否传输gzip压缩标志
9、CDN的实现?
BAT等都有提供CDN服务
可用LVS做4层负载均衡
可用Nginx,Varnish,Squid,Apache TrafficServer做7层负载均衡和cache
10、PHP并发编程实践?
PHP的Swoole扩展
消息队列
接口的并发请求
11、使用Memcache缓存的效果如何?
效果非常好:memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显
极大地降低CPU使用率
12、mysql优化方向?
数据表数据类型优化;索引优化;SQL语句的优化
存储引擎的优化
数据表结构设计的优化
数据库服务器架构的优化
13、七层负载均衡的实现Nginx配置 启示?
|||-begin
http{
upstream cluster{
server srv1;
server srv2;
server srv3;
}
server{
listen 80;
location /{
proxy_pass http://cluster;#调用上面的upstream cluster中的内容
}
}
}
|||-end
推荐使用nginx七层(应用层)负载均衡的实现:配置那是相当的简单
二、内容在总结中
php面试专题---22、网站优化 总结的更多相关文章
- php面试专题---MYSQL查询语句优化
php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...
- php面试专题---MySQL常用SQL语句优化
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...
- php面试专题---Mysql索引原理及SQL优化
php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...
- php面试专题---19、MySQL高可扩展和高可用考点
php面试专题---19.MySQL高可扩展和高可用考点 一.总结 一句话总结: 要区别分区和分库分表,分区的话对用户是透明的,分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志 1 ...
- web网站优化
没事儿研究一下YAHOO工程师对网站优化给出的策略,对重点部分在这儿做下笔记 -----------------------------------------------我是分割线--------- ...
- 手撕面试官系列(六):并发+Netty+JVM+Linux面试专题
并发面试专题 (面试题+答案领取方式见侧边栏) 现在有 T1.T2.T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 在 Java 中 Lock 接口比 syn ...
- php面试专题---MySQL分表
php面试专题---MySQL分表 一.总结 一句话总结: 分库分表要数据达到一定的量级才用,这样才有效率,不然利不一定大于弊,可能会增加一次I/O消耗 1.分库分表的使用量级是多少? 单表行数超过 ...
- php面试专题---MySQL分区
php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物 ...
- php面试专题---18、MySQL查询优化考点
php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...
随机推荐
- vue 父子component生命周期
如今前端框架都流行组件化,页面元素都可以使用组件进行高度概括,那么处理组件之间的关系就如同处理页面架构一样重要.正确理解组件之间的关系,才能让代码按照我们与预料方式工作.最近参与了一个Vue.js的项 ...
- SpringMVC起步(一)
SpringMVC起步(一) 笔记来源于慕课网:https://www.imooc.com/video/7126/0 MVC:Model-View-Controller Model:模型层,业务数据的 ...
- 关于fork
关于fork 之前和同学讨论了一个关于fork的问题,之前自己也是稍微看过一点,但是具体的也不是太了解,这样还是很不好的. 具体的问题来源于一个面试题,大概是问 fork||fork操作会生成几个新的 ...
- Vue --》 如何在vue中调用百度地图
1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/ ...
- 东软、天健、金仕达、杭创、中联、NECHIS、军字一号 HIS产品的比较
HIS主流厂商产品介绍1.沈阳东软医疗系统有限公司创立于1998年公司是中国目前最大的软件集团——东软集团为技术和资源依托,以研制生产大型医疗设备为主,同时为医院数字化提供全面解决方案.但是,公司改制 ...
- [c#]Extesion method
做一个类似Vb.net里面with的方法 public static void Use<T>(this T item, Action<T> work) { work(item) ...
- [19/05/26-星期日] JavaScript_ 基本语法_运算符
一.概念 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- VBA中Let与Set的区别
Let与Set的区别 1.在“类模块”中 Property Let 语句 在Class块中,是给普通变量进行赋值操作的Property,该种Property将不能在其前面使用Set,因而将不能用户对对 ...
- 面向切面编程 AOP 和装饰器??
1.AOP概念:面向切面编程,指扩展功能不修改源代码,将功能代码从业务逻辑代码中分离出来. 主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要意图:将日志记录,性能统计,安全控制, ...
- 模板 - 线性递推BM
模数是998244353的话好像NTT可以更快. #include<bits/stdc++.h> using namespace std; typedef long long ll; co ...