清水泥沙

PHP(高并发面试题)

web防盗链

  • 判断referer
    • 使用nginx模块的ngx_http_referer_module来阻挡非法域名的请求
  • 判断签名
    • 使用nginx第三方模块httpAccessKeyModule配置

减少页面HTTP请求

性能黄金法则

10%-20%花在响应用户接收请求的HTML文档上

80%是花在请求HTML所需要的所有组件

如何改善

  • 减少请求组件数量
  • 图片地图
    • 将多个图片合并,根据点击图片位置解析超链接
  • Css精灵
  • 合并脚本和样式
  • 图片使用base64编码减少引用

浏览器缓存以及压缩技术

200 form cache 直接从本地读取

304 not modified 协商缓存,如果本地缓存失效,请求头发送一定校验数据到服务端,如果服务端数据没有改变,直接从本地缓存响应

200 ok 以上两种失败,没有使用缓存,服务器直接返回完整响应。

脚本压缩

  1. js压缩
  2. css压缩
  3. 图片压缩

可以修改nginx配置

CDN加速

建立独立图片服务器

动态语言静态化

原因

动态脚本需要计算和数据查询,访问量大,服务器压力就大

服务端

  • 集群部署,负载均衡,减少单机的访问压力
  • 缓存,浏览器缓存,CDN缓存,分布式缓存。设定缓存雪崩,缓存击穿,缓存穿透,双写一致等容灾方案
  • 异步处理任务,次要操作通过多线程,异步队列,延时或者定时任务进行处理
  • 优化数据库,分区,分库,分表,优化索引,可以使用全文搜索引擎来代替复杂查询
  • 缓存预热
  • 较少IO次数
  • 减少IO传输大小
  • 限流,通过前端页面限流,nginx设置阈值限流,服务端进行限流
  • 各种池技术,连接池,进程池
  • 优化代码的流程逻辑
  • 锁选择,尽量避免使用悲观锁
  • 并发处理,可以开启多线程,多携程等方式对业务进行处理