浏览器请求并发限制

随着现在的网页设计的越来越炫酷,功能越来越丰富。伴随着的是网页加载的资源越来越多,常常一个页面加载的CSS、JS、图片、接口等超过几十上百个。

但其实,在客户端,浏览器并不一定会对每个资源开个连接去请求加载,是有并发限制的。

下面这张图是不同浏览器不同版本的并发限制统计:
在这里插入图片描述
这其实是基于多方面因素考量出的优化结果,比如:

  • 对客户端操作系统而言,过多的并发涉及到端口数量和线程切换开销。
  • HTTP/1.1有Keep Alive,支持复用现有连接,等请求返回回来后,再复用连接请求可以快很多。
  • 将所有请求一起发给服务器,也很可能会引发服务器的并发阈值控制而被BAN。

也并不是浏览器限制并发了,我们就没别的办法了。提升页面打开速度的技术有很多,常见的:

  • domain hash:对资源做哈希,请求到不同的域下面。
  • cookie free:前后端分离,减少不必要的cookie提交。
  • css sprite:将零星的图片整合到一张大图中,减少请求次数。
  • js/css combine:资源合并,减少请求次数,不过也会增加文件修改的几率。
  • max expires time:合理设置客户端缓存时间。
  • loading images on demand:图片按需加载。

域名发散与收敛

  • 域名发散:

    因为浏览器对同一域名下的最大连接数做了限制,为了让浏览器并发加载,将资源分散到不同域名下,缺点是需要DNS解析更多的域名。

  • 域名收敛:

    在移动场景下,为了解决DNS解析耗时问题,将资源汇总到一个或更少的域名下。

参考资料:

https://www.zhihu.com/question/20474326

http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Gerapy-Selenium 中开启并发请求,可以使用 Gerapy-Selenium 提供的 `SeleniumRequest` 的 `meta` 参数来传递并发请求的配置信息。下面是一个示例: ```python import asyncio from gerapy_selenium import SeleniumRequest class MySpider(scrapy.Spider): name = 'myspider' allowed_domains = ['example.com'] start_urls = ['http://example.com/page1', 'http://example.com/page2', 'http://example.com/page3'] custom_settings = { 'CONCURRENT_REQUESTS': 5, # 并发请求数量 'DOWNLOAD_DELAY': 0.5, # 请求间隔时间 } def start_requests(self): for url in self.start_urls: yield SeleniumRequest(url=url, callback=self.parse, meta={'driver_wait_timeout': 10}) async def parse(self, response): driver = response.meta['driver'] # 使用 driver.find_element 等方法进行元素定位和操作 title = driver.find_element(By.XPATH, '//h1').text yield {'title': title} ``` 在上述示例中,`CONCURRENT_REQUESTS` 设置了并发请求数量为 5,`DOWNLOAD_DELAY` 设置了请求间隔时间为 0.5 秒。通过在 `start_requests` 方法中使用 `SeleniumRequest` 并设置 `meta` 参数来传递额外的配置信息,例如 `driver_wait_timeout` 表示等待浏览器加载完成的超时时间。 注意,Gerapy-Selenium 提供了异步的支持,因此可以在 Spider 中使用异步代码。在上述示例中,使用了 `async` 和 `await` 关键字定义了异步的 `parse` 方法。 需要注意的是,并发请求数量的设置可能会受到浏览器驱动的限制,不同的浏览器驱动有不同的并发请求数量限制。此外,设置过大的并发请求数量可能会导致网站的反爬机制触发,请根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值