• 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七层(应用层)负载均衡的实现:配置那是相当的简单

    二、内容在总结中

     
  • 相关阅读:
    nginx 代理概念理解
    nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
    Mybatis-Generator 详解 http://www.cnblogs.com/jtzfeng/p/5254798.html
    web容器线程数和程序中线程阻塞导致 请求超时
    教程-Delphi操作快捷键
    PC-博客首页中增加必应或GOOGLE搜索功能
    PC-大概最全的黑客工具表了
    PC-计算机动行命令里的密密!系统管理程序!
    PC-红警联机问题与下载
    PC-破解RAR软件注册问题
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11087038.html
Copyright © 2020-2023  润新知