随着网络环境的大幅改善和网络资费的大幅降低,人们在互联网上的互动不再局限于传统的文字内容,图片、语音、视频等也加入了互动的行列。与文本内容相比,多媒体在易用性和情感表达方面具有优势。当然,它也比文本大得多。例如,文本消息小于100字节,但视频消息可能超过100MB。这使得多媒体在网络传输和实时访问方面比文本内容更加困难。在网站或程序中,除了用户交流的图片、视频等交互信息外,其他形式的大文件也越来越多。保证大文件的上传稳定性是一个需要长期投入和突破的重点。今天,我们就来看看有哪些方法可以保证用户有良好的上传体验。如何让资源传递快速稳定可能你会注意到,当你使用QQ的时候,好友发给你的图片和视频在显示之前会加载一段时间。这是因为程序并没有给你发送文件,而是发送了路径,直到我们访问路径后才会加载文件。这是目前主流的大文件通信方式,即:上传文件到文件服务器,推送文件路径,接收文件路径,加载文件。这是因为大文件的传输时间太长,会影响消息的即时性,所以不会直接传文件。那么,如果我们想要快速稳定地发送图片、视频、语音等多媒体信息,就可以从“上传多媒体文件到文件服务器”这一步开始。上传访问点优化上传文件的第一种方法是优化上传访问点。向文件服务器上传请求,服务器响应建联,上传者继续传输数据,直到上传完成。这个过程耗时越短,网速就会越快。但目前我国固网宽带运营商复杂,跨运营商网络接入的高时延和不稳定一直是难题。对于传输数据较多的视频、图片等多媒体文件,跨运营商上传时,多次RTT(Round-Trip-Time,往返时延)的体验会更差。目前针对这种网络情况的主流做法是为不同的网络运营商提供不同的上传接入点IP,然后通过运营商的DNS解析,让用户可以通过运营商的上传接入点快速上传文件。同时,在多线机房部署后端图片上传存储服务,方便快捷的将文件流提交到存储层,避免访问带来的跨网开销指向存储服务,解决其他运营商用户下载图片时需要跨网的问题。但是,多个运营商接入点IP虽然可以解决跨运营商网络访问的问题,但是在管理和使用上会更加复杂。因此,大部分服务商都会采用多线BGP(BorderGatewayProtocol,边界网关协议)机房托管,这样就可以只提供IP,让接入用户自主选择最佳路由。分块上传去除了上传接入点的优化,分块上传还可以提高多媒体文件的上传性能和成功率。分块上传是指在上传客户端上,将要上传的文件按照一定的规则分成多个数据块,并按照规则标记序号,然后将这些数据块分别上传。将多个数据块组合成完整的文件。对于图片、视频等大文件,分块上传可以让客户端在分块完成后,充分利用网络带宽,同时上传多个分块,有效提高上传效率。另外,在一些网络环境较差,信号不稳定的场景下,采用block的方式。上传失败重试时,只需要重传一个失败的block,不需要重新上传整个文件,大大提高了重传的成功率。在分段上传中,分段大小也是一个重要问题。如果分块太大,分片数量少,上传并发不够,可能会降低上传效率,失败后重传每个大分块的成本会比较高。但是如果block太小,分片数量多,并发需要的连接数太多,多连接会降低网络的整体吞吐量,以及客户端拆分合并block的开销上传端和服务接收端会相应增加,传输时也会有更多的额外流量。因此,如何在不同的网络环境下选择合适的块大小非常重要。一般来说,在WiFi、4G等网络条件较好的环境下,对应的blocksize应该设置大一些;在2G和3G网络较弱的情况下,blocksize可以适当的设置小一些。上传大文件需要很长时间。如果用户断网、重启设备等,上传任务还没有完成就需要暂停上传任务。当然,用户下次上传肯定不想从头开始。因此,如何从暂停位置开始上传的功能就变得很有必要了。这就是我们常说的“断点续传”。断点续传是为每个上传行为分配一个唯一的任务标识。每个区块除了携带自己的序列号外,上传时还需要携带这个任务。ID,服务器临时存储收到的相同任务ID的块,即使因为某种原因暂停上传,这些临时块也不会立即清除,而是会保留一定时间。当上传者需要继续上传时,会在请求的同时继续携带之前的任务ID。客户端收到后,会检查服务器上已有区块的状态。如果还没有过期,则从上次断开的块位置继续上传,否则重新上传。在上传大文件时,断点续传功能可以解决大文件传输过程中因网络错误而不得不重新开始的痛点,对于用户上传体验的提升非常明显。如何快速拥有这些上传优势如果要完成上述大文件上传优化,需要从架构、设计、运维等多方面考虑,不仅优化成本高,改造时间也相对较短长的。如果你想拥有以上提到的优势,你可以选择制作云存储。优拍云存储可以让大文件就近通过CDN上传,上传加速传输,分块上传,断点续传。同时,它还可以使用图像处理、视频处理、文件压缩和解压缩来处理文件。在访问文件时,CDN还会利用大文件分段缓存、视频拖拽、链接优化等功能进行全网分发。保障企业海量数据的传输、处理、存储、分发和容灾需求。推荐阅读CSSBox的MarginCollapse流行脚本杀与SaaS不解之缘
