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、网站优化 总结的更多相关文章

  1. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  2. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  3. php面试专题---Mysql索引原理及SQL优化

    php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...

  4. php面试专题---19、MySQL高可扩展和高可用考点

    php面试专题---19.MySQL高可扩展和高可用考点 一.总结 一句话总结: 要区别分区和分库分表,分区的话对用户是透明的,分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志 1 ...

  5. web网站优化

    没事儿研究一下YAHOO工程师对网站优化给出的策略,对重点部分在这儿做下笔记 -----------------------------------------------我是分割线--------- ...

  6. 手撕面试官系列(六):并发+Netty+JVM+Linux面试专题

    并发面试专题 (面试题+答案领取方式见侧边栏) 现在有 T1.T2.T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 在 Java 中 Lock 接口比 syn ...

  7. php面试专题---MySQL分表

    php面试专题---MySQL分表 一.总结 一句话总结: 分库分表要数据达到一定的量级才用,这样才有效率,不然利不一定大于弊,可能会增加一次I/O消耗 1.分库分表的使用量级是多少? 单表行数超过 ...

  8. php面试专题---MySQL分区

    php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物 ...

  9. php面试专题---18、MySQL查询优化考点

    php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...

随机推荐

  1. Krustal重构树

    zz:https://blog.csdn.net/ouqingliang/article/details/81206050 Kruskal重构树基于Kruskal算法.在执行算法过程中,Kruskal ...

  2. Token 认证

    Token 认证 From今日头条:https://www.toutiao.com/i6516654967204348430/?tt_from=weixin&utm_campaign=clie ...

  3. windows和linux中查看端口占用情况并kill掉对应进程

    好几次在不同的情况下遇到 需要查看端口信息 并且kill掉对应进程的情况 相关的参数总是记不全 在这里记录下 以后查看方便 windows中查看正在使用端口的信息netstat -ano|findst ...

  4. centos7安装配置jdk、tomcat

    centos7安装jdk1.8 1.新建文件夹java,上传文件jdk-8u111-linux-x64.tar.gz到java文件夹 2.解压tar包: tar -zxvf jdk-8u111-lin ...

  5. GitHub Pages建立第一个静态页面

    1.创建仓库 创建仓库点击右上角的加号,选择newrepository.然后对仓库信息进行设置.注意箭头标识的几个地方.仓库名必须是http://username.github.io的形式.必须勾选p ...

  6. API网关spring cloud gateway和负载均衡框架ribbon实战

    通常我们如果有一个服务,会部署到多台服务器上,这些微服务如果都暴露给客户,是非常难以管理的,我们系统需要有一个唯一的出口,API网关是一个服务,是系统的唯一出口.API网关封装了系统内部的微服务,为客 ...

  7. 【sql server复制】不重新初始化快照的情况下新增表/存储过程/函数等

    转发自:https://www.cnblogs.com/datazhang/p/5498789.html sqlserver同步后在不重新初始化快照的情况下新增表        在已有事务复制中,时长 ...

  8. MySQL 中 limit 的使用

    需要注意的是,在Oracle中不使用limit,Oracle 使用rownum select no,name from emp limit 5 取前5条记录, select no,name from ...

  9. 创建客户端项目并读取服务化的配置中心(Consul + Spring Cloud Config)

    创建客户端项目并读取服务化的配置中心 将配置中心注册到服务中心(Consul) POM文件添加依赖: <dependency> <groupId>org.springframe ...

  10. Leetcode Lect7 哈希表

    传统的哈希表 对于长度为n的哈希表,它的存储过程如下: 根据 key 计算出它的哈希值 h=hash(key) 假设箱子的个数为 n,那么这个键值对应该放在第 (h % n) 个箱子中 如果该箱子中已 ...