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查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...
随机推荐
- TensorFlow学习笔记4-线性代数基础
TensorFlow学习笔记4-线性代数基础 本笔记内容为"AI深度学习".内容主要参考<Deep Learning>中文版. \(X\)表示训练集的设计矩阵,其大小为 ...
- Monte Carlo Policy Evaluation
Model-Based and Model-Free In the previous several posts, we mainly talked about Model-Based Reinfor ...
- 当系统开启safe_mode和 open_basedir
当系统开启safe_mode和 open_basedir,在程序中使用以下语句curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);并且遇到301,302状态吗时 ...
- python字符串学习总结
python字符串是不可变类型 所以没有添加和删除操作,更改元素,不会更改元素本身,可以用id(str) 测试,只有从新赋值新的对象才有效果.
- P5444 [APIO2019]奇怪装置
传送门 考虑求出最小的循环节 $G$ 使得 $t,t+G$ 得到的数对是一样的 由 $y \equiv t \mod B$ ,得到 $G$ 一定是 $B$ 的倍数,设 $zB=G$,则 $t,t+zB ...
- [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (2/4)
在最后一行,书写shmfs /dev/shm tmpfs size=2g 0 用来调高数据库运行是的内存分配问题. 创建需要的路径和分配权限. 设置 oracle 用户环境参数. 修改标头显示的部分. ...
- Object of type 'ndarray' is not JSON serializable
Object of type 'ndarray' is not JSON serializable import numpy as np import json arr=np.asarray([345 ...
- vue 和react中子组件分别如何向父组件传值
vue子组件和父组件双向传值: 子: Vue.component("childComponent",{ template:`<div><p @click='pos ...
- 后台PDF返回Base64,前台接收预览
读取已存在的PDF文件,path为绝对路径 string base64String = "";byte[] buffer=null; using (FileStream fs = ...
- 常用Linux Shell命令组合
序号 任务 命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \;find . type f -size 0 -delete 2 查看进程,按 ...