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查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...
随机推荐
- ios平台appstore不支持网页内嵌app解决方案
苹果一直拒绝 UIWebView 内嵌 HTML5 页面的 iPhone.iPad APP应用上架到 App Store,建议这样的APP去做成Safari的Web应用.但是,苹果的审核人员只从界面. ...
- 前端 CSS的选择器 基本选择器
基本选择器包括: 标签选择器 类选择器 ID选择器 通用选择器 标签选择器 就是通过标签名来选择元素: 选中p标签 <!DOCTYPE html> <html lang=" ...
- Leveldb源码分析--2
coming from http://blog.csdn.net/sparkliang/article/details/8573618
- Spring MVC-学习笔记(1)认识spring mvc
1.基于XML Schema.Controller接口的spring mvc简单例子 1>创建一个动态Web项目,选择同时创建web.xml文件 2>在WEB-INF/lib中粘贴spri ...
- [2019杭电多校第三场][hdu6609]Find the answer(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609 大致题意是求出每个位置i最小需要将几个位置j变为0(j<i),使得$\sum_{j=1}^ ...
- java SSM框架 代码生成器 快速开发平台 websocket即时通讯 shiro redis
A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 , ...
- 剑指offer学习--实现单例模式
只能生成一个实例的类是为了实现单例模式的类型. 加同步锁前后两次判断实例是否已存在 我们只是在实例还没有创建之前加锁操作,以保证只有一个线程创建出实例.而当实例已经创建之后,我们已经不需要再做加锁操作 ...
- node+mysql+express实现登录/注册/修改密码/删除用户 接口
实现用户的注册.登录.修改密码.删除用户操作 用到的数据库:nodecms:表:user 目录结构: db目录下存放数据库操作语句: userSQL.js 用户有关的操作语句 router目录 接口路 ...
- RabbitMQ相关使用命令
启动:rabbitmq-server -detached 停止:rabbitmqctl stop 状态:rabbitmqctl status 查看所有用户rabbitmqctl list_users ...
- pg_resetxlog - 重置一个 PostgreSQL 数据库集群的预写日志以及其它控制内容
SYNOPSIS pg_resetxlog [ -f ] [ -n ] [ -o oid] [ -x xid] [ -l fileid,seg] datadir DESCRIPTION 描述 pg_r ...