【问题标题】:Measure upload time?测量上传时间?
【发布时间】:2010-03-04 17:39:06
【问题描述】:

我有一个非常简单的页面,用户可以通过该页面上传文件。仅使用服务器端 C#(例如代码隐藏),我如何测量用户必须等待文件上传的时间?

【问题讨论】:

  • 我不想告诉用户上传还剩多少时间。我正在尝试审核上传花费了多长时间。

标签: c# asp.net time measurement


【解决方案1】:

这非常困难(嗯,它是在 IIS6 中)。你需要编写一个HttpModule来拦截上传并处理它,然后使用进来的文件的总大小(它在请求的头部),计算你每秒得到多少字节,然后你可以计算还剩多少时间。

但是,您不能仅使用代码隐藏文件执行任何此操作 - 该文件已经上传并且在请求到达 asp.net 处理程序时可用。

【讨论】:

  • 你告诉我如何计算速度,而不是持续时间?是对的吗?您的最后一段是相关的——说 ASP.NET 在请求已经完全上传到服务器之前不知道它?
  • 不,我告诉过你如何测量持续时间。一旦有了每秒字节数,如果您知道文件的总字节数,就可以计算总时间。例如。如果您获得每秒 4,000 字节的吞吐量,并且文件为 16,000 字节,则总共需要 4 秒(估计;这些计算在完成之前永远不会完全正确)。这意味着您需要保持接收到的总字节数和自启动以来经过的秒数——将两者相除以获得每秒字节数,然后将文件大小(以字节为单位)除以每秒字节数以获得整个文件的秒数.
  • 我描述的方法用于对经过时间的预测估计(例如,通常会从总时间中减去总时间,以给用户“剩余秒数”或任何提示)。如果我们知道您对数据做了什么,这将很有帮助……如果您只是将其用于后端报告目的,Fisher 先生的解决方案就足够了。
【解决方案2】:

我必须找到类似的东西和I'm using this

【讨论】:

  • 该页面上的内容告诉我上传花了多长时间?
【解决方案3】:

如果您不关心完全准确,您可以向服务器发送一个快速调用以指示上传正在开始,然后立即发出上传请求。然后,服务器可以测量第一次调用和第二次调用完成之间的时间。

【讨论】:

  • 这并不像听起来那么容易,但我还是要投赞成票。以两个用户同时上传文件的情况为例——服务器需要能够区分唯一的文件开始时间。可行,但并非微不足道。而且由于第一次调用很可能是带外 AJAX 类型的调用,服务器上的数据结构需要是静态的,然后他需要清除它,等等。
猜你喜欢
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多