看了管理浏览器是否能自动处理过多并发请求的文章,看到大家争论不休我在这里想发表一下自己的看法
首先我们应该明确我们为什么要去处理并发请求,怕服务器崩溃?在实际使用场景下如果用户通过不停的点击发送请求就能让服务器崩溃,那么只能说明服务器太不及格了,排除恶意攻击之外服务器是不需要前端去搞什么资源优化的,因为他们都有对应的API资源控制,当然你说服务器条件有限我一定要在前端搞优化那么就要讲讲浏览器了
1. 览器引擎
● 渲染引擎:负责解析HTML、CSS并渲染页面。常见的渲染引擎有:
○ WebKit:用于Safari和一些旧版浏览器。
○ Blink:基于WebKit,用于Chrome、Edge、Opera等。
○ Gecko:用于Firefox。
● JavaScript引擎:负责执行JavaScript代码。常见的引擎有:
○ V8:用于Chrome和Node.js。
○ SpiderMonkey:用于Firefox。
○ JavaScriptCore:用于Safari。
2. 浏览器缓存
● 强缓存:通过Cache-Control和Expires头控制,直接从本地缓存读取资源,不发送请求。
● 协商缓存:通过Last-Modified和ETag头控制,向服务器验证资源是否过期,未过期则使用缓存。
3. 同源策略
● 定义:浏览器限制不同源的脚本、文档或媒体资源进行交互,防止恶意行为。
● 跨域解决方案:
○ CORS(跨域资源共享):服务器设置Access-Control-Allow-Origin头允许跨域请求。
○ JSONP:通过
4. 安全机制
● XSS(跨站脚本攻击)防御:通过内容安全策略(CSP)和输入验证防止恶意脚本注入。
● CSRF(跨站请求伪造)防御:通过验证Referer头和使用CSRF令牌确保请求来源合法。
● HTTPS:通过SSL/TLS加密通信,防止数据被窃听或篡改。
5. 开发者工具
● Elements:查看和编辑HTML、CSS。
● Console:执行JavaScript代码和查看日志。
● Network:监控网络请求和响应。
● Sources:调试JavaScript代码。
● Performance:分析页面加载和运行性能。
● Application:管理缓存、Cookie、本地存储等。
6. 存储机制
● Cookie:小型文本文件,用于会话管理和用户跟踪。
● LocalStorage:持久化存储,数据不会随会话结束而清除。
● SessionStorage:会话级存储,数据在页面关闭后清除。
● IndexedDB:浏览器内置的NoSQL数据库,适合存储大量结构化数据。
7. 性能优化
● 减少HTTP请求:合并文件、使用雪碧图、内联资源。
● 压缩资源:使用Gzip或Brotli压缩HTML、CSS、JavaScript文件。
● 使用CDN:通过内容分发网络加速资源加载。
● 懒加载:延迟加载非关键资源,如图片和视频。
● 预加载和预取:通过和提前加载资源。
8. Web API
● Fetch API:用于发起网络请求,替代传统的XMLHttpRequest。
● WebSocket:实现全双工通信,适合实时应用。
● Service Worker:用于实现离线缓存和推送通知。
● WebRTC:支持浏览器间实时音视频通信。
● WebAssembly:允许在浏览器中运行高性能的编译代码。
9. 浏览器兼容性
● Polyfill:通过JavaScript代码模拟新特性,使旧浏览器支持新功能。
● Babel:将ES6+代码转换为ES5,提高兼容性。
● Can I Use:查询浏览器对各种Web技术的支持情况。
● 谷歌浏览器在处理同一域名下的HTTP请求时,确实存在并发连接数的限制,但这个限制并不是绝对的6个请求。根据最新的资料,谷歌浏览器对于同一域名下的并发请求数量限制如下:
同一域名下,同一GET请求的并发数是1。这意味着如果有多个相同的GET请求,浏览器会依次处理,前一个请求完成后才会开始下一个请求,其他请求会被放入队列中等待
同一域名下,不同GET/POST请求的并发数量最高可达6。当发送的请求数量达到6个,并且都没有得到响应时,后续的请求会被阻塞,直到前面的请求完成
因此,谷歌浏览器一次性最多并发六个请求的说法并不完全准确。更准确的说法是,同一域名下,不同类型的请求(如GET和POST)可以并发处理最多6个,而同一类型的请求(如多个相同的GET请求)则会依次处
最后还请大佬们嘴下留情