网页图片加载慢的求解指南

news2024/12/23 17:48:20

网页/图片加载慢的求解指南

一、前言与问题描述

今天刚换上华为的HUAWEI AX3 Pro New,连上WIFI后测速虽然比平时慢,但是也不算太离谱,如下图所示:

在这里插入图片描述

估计读者们有也和作者一样,还没意识到事情的严重性😁。

直到晚上刷六级真题时使用有道查词,竟然延迟好高:几乎是输入词汇点确定后需要1秒才能显示结果,偶尔还会显示网络错误,这我真受不了。

然后上QQ空间刷动态时,发现一张图片要转9-10秒才能加载出来,严重影响我的用机体验,势必要解决这个问题。

二、解决方案

主要办法是关闭IPv6网络,关闭方法主要有两种:

2.1 方法1:从路由器上关闭IPv6

读者需要简单的网络管理知识,找到路由器管理的IP地址,比如我的是:

192.168.1.3	

在浏览器中输入该地址就会进入路由器管理页的登录界面,以我的为例,为如下界面:

在这里插入图片描述

然后登录路由器即可,如果你不知道管理员密码,一般在路由器的背面有写上,如果没写(比如我的就没写),那么一般是与你的WiFi密码一致。再不济,读者可以上网查,查询提示语句是:

XX路由器默认管理员密码是什么?

登录进去后,读者自行寻找IPv6的按钮(不同路由器管理页不一样,俺就不演示了),例如我找到时是这样的:

读者找到类似按钮后,将其关闭即可。

2.2 方法2:在终端上关闭IPv6(仅适用于电脑)

按住Win+R快捷键,打开“运行”窗口,输入control并回车即可打开控制面板。如下图所示:
在这里插入图片描述

然后在控制面版中单击网络和Internet”接着单击网络和共享中心打开如下页面:

然后在中间右边点击你的网络,比如我将点击WLAN(HUAWEI AX3 Pro New),然后看到如下页面

单击属性,打开如下页面:

取消勾选Internet 协议版本 6(TCP/IPv6)确定后即可完成操作。

搞完之后我再次尝试发现加载什么的都不卡了,然后我测了下网速如下图所示:

三、附录

以下内容需要读者具备一定计算机网络的相关知识才能看懂,望读者周知

3.1 为什么开了IPv6会慢?
3.1.0 DNS解析问题

如果您启用了 IPV6,则 DNS 查找速度比 IPV4 慢 2 到 3 倍。这就是为什么您的计算机似乎“无法连接”网站。当您发起与任何站点的连接时,它所做的第一件事就是在 DNS 中查找 IP 地址。

由于多种原因,IPV6 上的 DNS 查找速度很慢。 首先,DNS 目前是串行处理的,而不是并行处理的。始终首先处理 IPV4 查找,然后处理 IPV6,因此至少需要两倍的时间。 其次,由于 IPV6 查找频率较低,因此它们不会经常缓存在 DNS 服务器上,从而导致进一步的延迟。 这就是为什么启用 IPV6 时网站看起来需要更长的时间才能开始加载,因为它们确实需要更长的时间才能开始加载!

另外,请记住,大多数网页会从许多不同的 URL 加载内容,并且每次浏览器必须查找图像、Flash 对象或页面上其他任何内容的地址时,页面速度都会加快。 您无法在操作系统中执行任何操作来加快速度。它影响所有操作系统,包括 Windows、Mac 和 Linux 最好暂时禁用 IPV6,除非您对此有特定要求(几乎没有人这样做)

3.1.1 关于 PMTU 黑洞

目前国内确实存在支持 IPv6 的服务器、CDN 节点不够多,IPv6 国际带宽比 IPv4 带宽小的问题,但也不至于会打开国内网站都卡。通常情况下遇到这个问题说明你到目标服务器的链路上存在 PMTU 黑洞。

MTU (Maximum transmission unit) 是一条链路上可以通过的三层数据包的最大尺寸(包含 IP 包头)。以太网上默认的 MTU 是 1500 字节,但是你和目标服务器之间的路径上可能存在小于 MTU 1500 的链路。这条路径上最小的 MTU 值就是整条路径的 PMTU 值。路由器在转发包时,超过 MTU 大小的包会被分片( Fragmentation ),也就是一个大包会被分切为多个不超过 MTU 的小包进行传输,传输效率会下降。

终端设备在发包时,也可以设置 DF ( Don’t Fragment )标记来告诉路由器不要分片。这时中间路由器会丢掉超过 MTU 的包,回复一条 ICMP Fragmentation Needed 消息。发送者收到这个包后,下次就会发小一点的包,这个过程叫做 PMTU Discovery 。现实中可以看到 HTTPS ( TLS )的流量大都是带 DF 标记的。

然而,互联网上有大量的中间设备为了所谓的“安全”或者没有正确配置,不回应 ICMP Fragmentation Needed 包,这使得访问某些网站时如果某个包的大小超过了 PMTU,会被无声地丢弃,直到 TCP 协议发现超时丢包进行重传,这非常缓慢。遇到这种情况,我们可以说你和目标服务器的路径上存在 PMTU 黑洞。

此外,IPv6 不支持分片,换句话说可以理解为 IPv6 下所有的包都是带 DF 标记的。中间路由器在遇到包尺寸大于 MTU 的情况时,应该回应 ICMPv6 Packet Too Big 消息。同样的,由于种种原因,某些中间设备可能会直接丢包而不回应 ICMPv6 Packet Too Big 消息,直到 TCP 协议发现超时丢包进行重传。。。

3.1.2 为什么 IPv4 没有这个问题

其实 IPv4 也有这个问题,我不只一次见网友说自己搭的软路由访问某些网站非常慢,而换回硬路由就正常。这是因为多数家用路由器默认对 IPv4 下的 TCP 开启了 MSS (maximum segment size) Clamping (使用 OpenWRT 软路由的朋友们可以在防火墙设置中找到 MSS Clamping 开关)。MSS Clamping 是针对 PMTU 黑洞的 Workaround,简单来说就是 TCP 握手时有个 MSS 字段决定单个 TCP 包的最大尺寸。路由器可以通过嗅探 TCP 握手包,把 MSS 值改小,使最终的三层 IP 包的尺寸( MSS+TCP 头大小+IP 头大小)不超过某个特定的值。

3.1.3 总结

现在国内 ISP 一般都是通过 PPPoE 虚拟拨号建立 WAN 口连接的。Ethernet 的默认 MTU 是 1500,但是 PPPoE 隧道有 8 个 bytes 的开销,所以 PPPoE 虚连接的 MTU 就是 1500-8=1492,减掉 IPv4 包头( 20 字节)和 TCP 包头( 20 字节),可以得知 IPv4 下需要把 MSS 设为 1452 以下。

IPv6 的包头是 40 字节,所以 IPv6 下需要把 MSS 设为 1432 以下。

这时问题来了,目前很多光猫、家用路由器对 IPv6 的优化很差,不支持对 IPv6 下的 TCP 包进行 MSS Clamping,这就导致访问 IPv6 网站时,若路径中存在 PMTU 黑洞,则打开很慢。

四、参考文献

[1] windows 7 - IPv6 feature in Network Adaptor is Slowing Internet - Super User

[2] 开启 IPv6 后网速变得很慢?可能是 PMTU 黑洞的问题 - V2EX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1704441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能客服新突破:大型模型训练助力提升客户服务体验

项目场景:训练大模型智能客服 智能客服新方法在金融服务领域的科技前沿应用 ** 一、 引言 随着科技的飞速发展,智能客服作为金融服务领域的一大创新点,正在逐渐改变传统的客户服务模式。特别是在自然语言处理(NLP)等…

马斯克:AI时代人人高收入,不需要工作,商品服务不再短缺,可能性80%

当前人工智能现状和未来如何?AI时代下,人类未来会发生哪些变化? 埃隆马斯克(Elon Musk)在2024 VivaTech大会上分享了关于地球未来的诸多愿景。 投资作业本课代表摘录了其中的要点,分享给大家&#xff1a…

传承的智慧:故事里的人生启示

传承的智慧:故事里的人生启示 在你的书中,通过故事元素来呈现自己的经历、教训和见解。通过情节、角色发展和冲突展示知识和经验,对主人公的影响和变化,以及对读者的启发和教育作用。 一、故事写作的“三种格式” 要创造一个引人入胜的故事,能够吸引读者,同时有效地传达…

STM32高级控制定时器(STM32F103):输入捕获模式

目录 概述 1 输入捕获模式 1.1 原理介绍 1.2 实现步骤 1.3 发生输入捕获流程 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM调制占空比函数 3.2 应用函数库 4 测试 4.1 功能框图 4.2 运行结果 源代码下载地址&#xf…

leetcode 1241每个帖子的评论数(postgresql)

需求 编写 SQL 语句以查找每个帖子的评论数。 结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 并且按 post_id 升序排列。 Submissions 可能包含重复的评论。您应该计算每个帖子的唯一评论数。 Submissions 可能包含重复的帖子。您应该将它们视为一个帖子。…

C++入门3——类与对象(2)

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。可是空类中真的什么都没有吗? 其实并不是的,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现&#xf…

【AN】制作二维机械专业的动画课件,播放、停止、显示和拖拽

下面代码实现了播放、停止、显示结构图,需要配合舞台的美术资源、元件动画来实现 stop(); Bt_play.addEventListener(MouseEvent.CLICK, playmc); function playmc(event:MouseEvent):void {MC_LINE01.play();MC_Jiantou.play();MC_xiexian.play();MC_LINE02.play()…

最新php项目加密源码

压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。源码全开源 如果上传的压缩包里有子文件夹(子文件夹里的php文件也会被加密),加密后的压缩包需要先修复一下,步骤:打开压缩包 》 工具 》 修复压缩文件…

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序,涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码,展示LabVIEW在快速开发和调试RFID应用中的优势,使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID(…

[数据集][目标检测]打架检测数据集VOC格式3146张2类别

数据集格式:Pascal VOC格式(不包含分割的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):3146 标注数量(xml文件个数):3146 标注类别数:2 标注类别名称:["nofight","fight"] 每个类别…

电脑技巧:一台主机两个显示器的连接设置方法

目录 一、先与电脑连接好两个显示器 二、先来看看WIN7连接两个显示器设置方法 三、再来看看WIN10连接两个显示器设置方法 在日常办公场景中,为了提高工作效率和增强交互体验,常需一台电脑同时连接两个显示器,正如我们在营业厅常见到的那样…

计算机网络路由协议之内部网关协议RIP例题与详解

互联网的路由选择协议 路由器转发表的路由协议如何得出呢? 使用路由算法进行,路由算法可以分为两类: 静态路由选择策略和动态路由选择策略。 静态路由选择策略: 非自适应路由选择,人工配置每一条路由。 动态路由选…

The First项目报告:解读去中心化衍生品交易所AVEO

2023 年12月8日凌晨,Solana 生态 MEV 基础设施开发商 Jito Labs 开放了 JTO 空投申领窗口,JTO 的价格在开盘短暂震荡后迅速攀高,一度触及 4.94 美元。 JTO 是加密社区这两日关注的热门标的,而在这场讨论中,除 Solana …

【JUC编程】-多线程和CompletableFuture的使用

多线程编程 文章目录 多线程编程[toc]引言创建多线程的方式继承Thread类实现Runnable接口实现Callable接口Callable和Runnable的区别 Lambda表达式 线程的实现原理Future&FutureTask具体使用submit方法Future到FutureTask类Future注意事项局限性 CompletionService引言使用…

损失函数篇 | YOLOv8更换损失函数之Inner-IoU | 通过辅助边界框计算IoU损失

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。为弥补现有IoU损失函数在不同的检测任务中的泛化能力较弱且收敛…

C++ 虚函数和纯虚函数

虚函数 #include <iostream> using namespace std; class Vehicle //交通工具 { public:void run() const{cout << "run a vehicle. " << endl;} }; class Car : public Vehicle //汽车 { public:void run() const{cout << "run a c…

项目文章 |NC揭示真菌中A-to-I mRNA编辑机制及其调控和演化

A-to-I mRNA编辑是一种重要的基因表达调控方式&#xff0c;它通过将mRNA中的腺苷(A)转变为肌苷(I)&#xff0c;从而可能改变蛋白质的编码信息。在动物中&#xff0c;这一过程由ADAR家族酶介导&#xff0c;然而在真菌中&#xff0c;由于缺乏ADARs的同源物&#xff0c;其背后的机…

如何使用Spring Cache优化后端接口?

Spring Cache是Spring框架提供的一种缓存抽象,它可以很方便地集成到应用程序中,用于提高接口的性能和响应速度。使用Spring Cache可以避免重复执行耗时的方法,并且还可以提供一个统一的缓存管理机制,简化缓存的配置和管理。 本文将详细介绍如何使用Spring Cache来优化接口,…

YOLOv8+PyQt5车辆类型检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

资源包含可视化的车辆类型检测系统&#xff0c;基于最新的YOLOv8训练的车辆类型检测模型&#xff0c;和基于PyQt5制作的可视化车辆类型检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的21种车辆类型&#xff0c;包…

三维大场景管理-3Dtiles规范

简介 &#xff1a; 这篇文章都是三年前写的了&#xff0c;一直在笔记库存中&#xff0c;今天把他放出来。主要是讲Cesium 的3Dtiles 格式&#xff0c;当然3Dtiles主要是解决场景管理大场景的LOD实现的问题&#xff0c;不管是剔除渲染性能优化之Culling 剔除或者 LOD 、3Dtiles…