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 以上两种失败,没有使用缓存,服务器直接返回完整响应。
脚本压缩
- js压缩
- css压缩
- 图片压缩
可以修改nginx配置
CDN加速
建立独立图片服务器
动态语言静态化
原因
动态脚本需要计算和数据查询,访问量大,服务器压力就大
服务端
- 集群部署,负载均衡,减少单机的访问压力
- 缓存,浏览器缓存,CDN缓存,分布式缓存。设定缓存雪崩,缓存击穿,缓存穿透,双写一致等容灾方案
- 异步处理任务,次要操作通过多线程,异步队列,延时或者定时任务进行处理
- 优化数据库,分区,分库,分表,优化索引,可以使用全文搜索引擎来代替复杂查询
- 缓存预热
- 较少IO次数
- 减少IO传输大小
- 限流,通过前端页面限流,nginx设置阈值限流,服务端进行限流
- 各种池技术,连接池,进程池
- 优化代码的流程逻辑
- 锁选择,尽量避免使用悲观锁
- 并发处理,可以开启多线程,多携程等方式对业务进行处理