Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 542|回复: 0

php 面试考点总结-高并发和大流量解决方案考点

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-12 09:48:47 | 显示全部楼层 |阅读模式

    1.web资源防盗链

    盗链概念

    盗链是指在自己的页面上展示一些并不在自己服务器的内容

    防盗链工作原理

    通过referer或者签名,网站可以检测目标网页访问的来源页,一旦检测到来源页不是本站即进行阻止或者返回指定页面

    解决方案1

    Referer
    nginx 模块ngx_http_referer_module用于阻挡来源非法的域名请求
    location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$
    {
        valid_referers none blocked bobo.com 
        if ($invalid_referer)
        {
            return 403 
        }
    }
    
    缺点:可以进行伪装referer

    解决方案2

    使用第三方HttpAccessKeyModule模块实现NGINX防盗链
    location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$
    {
        accesskey on;
        accesskey_hashmethod md5;
        accesskey_arg sign;
        accesskey_signature "bobo$remote_addr";
    }
    
    缺点:要在每个资源后面加个签名

    2.减少http请求次数

    为什么要减少http请求次数

    HTTPl连接产生的开销
    域名解析->TCP连接->发送请求->等待->下载资源->解析时间

    解决方案1

    图片地图
    使用标签

    解决方案2

    CSS精灵
    通过指定css的backgroud-image和backgroud-position来显示元素

    解决方案3

    合并脚本和样式表
    使用外部js和css文件引用方式

    解决方案4

    图片使用base64编码减少页面的请求数
    使用外部js和css文件引用方式

    3.浏览器缓存和压缩优化技术

    HTTP缓存机制

    1.200 from cache: 直接从本地缓存中获取响应,最快速,最省流量,因为根本没有向服务器发送请求
    2.304 not modify:协商缓存,浏览器在本地没有命中情况下请求头发送一定的校验数据到服务端,如果服务端数据没有改变浏览器从本地缓存响应,返回304,快速,发送的数据小,只返回一些基本的响应头信息,数据量很小,不发生实际响应体
    3.200 OK:以上两种缓存全都失败,服务器返回完整响应,没有用到缓存,相对最慢。
    NGINX配置
    location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$
    {
        expires 30d;  //缓存30天
    }
    
    前端代码和资源的压缩
    js代码压缩常用工具:UglifyJs, YUI Compressor, Closure Compiler
    css代码压缩常用工具:YUI Compressor, CSS Compressor
    html代码压缩常用工具:htmlcompressor
    图片压缩
    常用工具:tinypng, JpegMini, ImageOptim
    gzip压缩
    location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$
    {
        gzip on|off //是否开启
        gzip_buffers 32 4K | 16 8K //缓冲
        gzip_comp_level [1-9] 推荐6 压缩级别(级别越高,压的越小,越浪费CPU资源)
        gzip_disable //什么样的uri不进行gzip压缩
        gzip_min_length 200 //开始压缩的最小长度
        gzip_http_version //开始压缩的http协议版本 
        gzip_types text/plain application/xml //对哪些类型的文件用
        gzip_proxied//设置请求者代理服务器,该如何缓存内容
        gzip_vary on|off //是否传输gzip压缩标志
    }
    

    4.使用CDN加速

    什么是CDN,全称:Content Delivery Network 内容分发网络

    使用CDN的优势

    5.建立独立的图片服务器

    独立的必要性:

    1.分担web服务器的I/O负载,将耗费资源的图片服务分离出来,提高服务器的性能和稳定性,
    2.能够专门对图片服务器进行优化,为图片服务设置有针对性的缓存方案,减少带宽成本,提高访问速度,
    3.提高网站可扩展性,通过增加图片服务器提高图片的吞吐能力

    采用独立域名:

    1.同一域名下浏览器的并发连接数有限制,突破浏览器的连接数限制(同一域名下浏览器并发连接数2-6个)
    2.由于cookie的原因,对缓存不利,大部分web cache 都只能缓存不带cookie的请求,导致每次的图片请求都不能命中cache
    3.如何进行图片上传和图片同步,NFS共享方式,利用FTP同步

    6.动态语言层的并发处理

    进程,线程,协程,同步阻塞,异步非阻塞,

    php并发编程实践:swoole 消息队列 接口的并发请求(curl_multi_init)

    7.数据库缓存层优化

    1 为什么的要使用数据库缓存

    极大地j解决数据库服务器的压力
    提高应用数据的响应速度
    常见的缓存形式:内存缓存,文件缓存
    是为了让客户端很少,甚至不访问数据库服务器进行数据的查询,高并发下,能最大程度降低对数据库服务器的压力

    2 使用redis,memcache缓存查询数据

    8.MySQL数据优化

    9.Web服务器的负载均衡,请求分发

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-16 18:06 , Processed in 0.068159 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表