1. 问题描述

文件大小 部署环境 平均上传速度
5M 外网 28s-36s
5M 公司局域内网 秒传,很快

2. 问题分析 
在网上搜索“测速网”测试了一下公司外网的带宽情况: 
上传带宽 = 1.04 Mbps = 133.2 kb/s 
下载带宽 = 1.25 Mbps = 160 kb/s

单位换算: 
1 Mbps(带宽速率)= 128 kb/s 
1M = 1024 kb

为什么公司内网环境的上传那么快呢?由于对网络不是很了解,我特意问了一下公司的网络管理员辉哥,我们公司办理的企业级100M光纤带宽。所以在公司的局域内网环境下,上传速率和下载速率都是100Mbps。因为是光纤,所以上传速率和下载速率是对等的,都是100Mbps。所以在内网环境的上传,是很快的。我们来算一下内网的上传: 
5M的上传文件,大小 = 5 * 1024 = 5120 KB; 
100Mbps = 100 * 128 KB/S 
上传用时 = 5120/12800 = 0.4S

为什么在外网上传就特别慢呢?因为公司对员工访问外网做了带宽限制,大概1-2Mbps的带宽; 
按照3Mbps的带宽我们来算一下公司的外网上传: 
5M上传文件, 大小 = 5*1024 = 5120 KB 
公司外网上传带宽 = 2 Mbps = 2* 128 KB/S = 256 KB/s 
上传用时 = 5120/256 = 20s 
由于上传带宽是300多号员工共享的,实际上传带宽会低于2 Mbps,所以导致外网环境的上传大概30s左右。

3. 带宽知识普及 
通常我们在运营商办理的带宽种类有如下集几种:

常见宽带 理论最高速率(Mbps) 理论最高速率(KB/S) 常见下载速率(供参考)
1M 1 Mbps 128 KB/S 77~128 KB/S
2M 2 Mbps 256 KB/S 154~256 KB/S
3M 3 Mbps 384 KB/S 231~384 KB/S
4M 4 Mbps 512 KB/S 307~512 KB/S
6M 6 Mbps 620 KB/S 462~620 KB/S
8M 8 Mbps 1024 KB/S 614~1024 KB/S
10M 10 Mbps 1280 KB/S 768~1280 KB/S
30M 30 Mbps 3840 KB/S 2560~3840 KB/S
50M 50 Mbps 6400 KB/S 3840~6400 KB/S
100M 100 Mbps 12800 KB/S 7680~12800 KB/S

从列表可见,我们【使用时的真实速率】通常达不到运营商支持的【最高速率】。 
运营商所谓的【最高速率】通常指我们使用的【下载速率】。为什么没有【上传速率】呢?

(1)上传带宽不一定等于下载带宽。

  • 宽带是ADSL接入(电话线接入)的话,由于ADSL使用的技术是一种不对称数字用户线,所以ADSL是不对等带宽,通常上传速度只有下载速度的1/8左右,可以说是国际标准了。
  • 光纤接入带宽的话,技术上是利用两条光纤分别负责上行和下行。所以原则上,上传下载速度是对等的。实际上呢,光纤用户依然被宽带运营商限制了上行带宽,即使是光纤入户的百兆带宽,上传带宽也不足4M。

(2)为什么宽带运营商要限制家庭用户的上行宽带 
主要原因可能就是为了省钱,毕竟公司都是以利益为主嘛。网民长期以来的网络使用习惯,使他们已经习惯了上行带宽慢,而且也没有用户死气白咧的要求提高上行带宽。如果宽带运营商给予上下行相同的速度,会造成资源浪费。但如果把上行带宽资源销售给机房的企业专线租用客户,则会获得更多的利益。托管在机房的服务器需要大量上行带宽,并不需要太多下行带宽。而且带宽价格非常昂贵,往往机房10M上行专线租用的费用就是家庭100M费用的5、6倍。由此看来,运营商很可能把亏欠我们的上行带宽拿去高价卖给企业机房了,你大爷!

4. 总结 
综上所述,国内的上行带宽(光纤接入)最大值4Mbps,然而通常也就 2Mbps 左右的上行带宽。 
所以互联网上传文件,很慢的。不要再盲目的改你的代码了,没用的。

互联网开发-web文件上传性能问题的更多相关文章

  1. web文件上传大小限制

    最近在项目中遇到上传文件,对上传文件的大小需要进行限制,这里学习和整理了一下一些常规的文件大小限制的方法. 一般分为两种方式,一种是服务器端判断文件大小进行限制,这种方法的存在明显的缺陷,当用户过多后 ...

  2. Java开发系列-文件上传

    概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...

  3. servlet web文件上传

    web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...

  4. Java Web文件上传

    参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...

  5. WEB文件上传下载功能

    WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...

  6. Web 文件上传 目录

    0. SpringMVC -- 梗概--源码--贰--上传 1. Web上传文件的原理及实现 2. Web文件上传方法总结大全 3. SpringMVC 文件上传配置,多文件上传,使用的Multipa ...

  7. Java Web文件上传原理分析(不借助开源fileupload上传jar包)

    Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web   最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...

  8. SpringBoot | 第十七章:web应用开发之文件上传

    前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...

  9. SpringBoot --web 应用开发之文件上传

    原文出处: oKong 前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继 ...

随机推荐

  1. 解决iText+freemark导出pdf不支持base64的解决办法

    工具类: package test; import java.io.IOException ; import org.w3c.dom.Element ; import org.xhtmlrendere ...

  2. SQl Server T-sql语句学习

    T-sql语句就是通过代码来代替鼠标完成一些操作,使用起来要比鼠标方便很多. 创建数据库   careate  database  +数据库名. 数据库名不能为中文,不能以数字开头. use  数据库 ...

  3. OpenCV Mat数据类型指针ptr的使用

    OpenCV Mat数据类型指针ptr的使用 cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600 uchar * data00 = imag ...

  4. p3584 [POI2015]LAS

    传送门 分析 f[i][S](S∈[0,4])表示第iii个食物没有被选/左边选/右边选/同时选的状态是由哪一个状态转移来的 我们需要满足两个条件: 每个人只能选择一个  改变选择之后不会比当前获得热 ...

  5. swing JCheckBox 更换复选框样式

    Java Swing - 如何自定义JCheckBox复选标记图标 摘自 https://www.w3cschool.cn/java/codedemo-484050311.html import ja ...

  6. 打印sql语句

    root->trace hibernate->trace ,然后,改配置 全文搜索:show_sql,将所有的show_sql改为true. 这样,就会显示sql语句了.

  7. Python--socket和threading编程

    网络编程基础(一) TCP/IP协议 OSI/RM协议 特点:独立于计算机硬件和操作系统,统一分配网络地址,提供可靠服务,隔离了物理网络的硬件差异 协议分层(百度):网络接口层:IEE802.3(以太 ...

  8. win10和ubuntu双系统下卸载ubuntu

    1.进入win10 2.下载EasyBCD,360软件管家里面有,version=2.2 3.启动软件,工具箱里面选择“BCD部署”→MBR配置选项中选“在MBR中安装Windows Vista/7的 ...

  9. CodeForces 658C Bear and Forgotten Tree 3 (构造)

    题意:构造出一个 n 个结点,直径为 m,高度为 h 的树. 析:先构造高度,然后再构造直径,都全了,多余的边放到叶子上,注意直径为1的情况. 代码如下: #pragma comment(linker ...

  10. 自定义MVC的Helper扩展方法 转 Insus.NET

    记得在开发ASP.NET时候,也经常性使用C#可以写自己义的扩展方法,如: http://www.cnblogs.com/insus/p/3154363.html 或http://www.cnblog ...