【发布时间】:2021-01-27 14:50:26
【问题描述】:
我有以下脚本,在本地(Windows 10 IIS、Windows 2003 Server)上运行良好,但在我们的托管服务器(Windows 2003 Server)上运行良好。任何超过 4mb 的内容都会下载非常慢,然后在到达文件末尾之前超时。但是,在本地,它可以快速完整地下载。
直接下载(链接到文件本身)会在 5 秒内从我们的托管服务提供商服务器下载一个 26.5mb 的文件。因此,下载限制没有问题。托管服务器和此脚本似乎存在问题。有什么想法吗?
Response.AddHeader "content-disposition","filename=" & strfileName
Response.ContentType = "application/x-zip-compressed" 'here your content -type
Dim strFilePath, lSize, lBlocks
Const CHUNK = 2048
set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromfile Server.MapPath("up/"&strfileName&"")
lSize = objStream.Size
Response.AddHeader "Content-Size", lSize
lBlocks = 1
Response.Buffer = False
Do Until objStream.EOS Or Not Response.IsClientConnected
Response.BinaryWrite(objStream.Read(CHUNK))
Loop
objStream.Close
【问题讨论】:
-
可能是 IIS 配置问题。我相信默认设置是 4MB...
-
如上所述。您可以直接下载文件,它会立即下载大文件。只是没有脚本。
-
是页面中的所有代码还是sn-p?可能是其他原因导致速度变慢?或者如何增加块大小?例如,读取一个块 (2048 字节) 需要 100 毫秒,这意味着下载一个 4 MB 的文件大约需要 3 分钟,但是将块大小增加到 20480 ( 20 KB) 只需要大约。 20 秒,看出区别了吗?
标签: asp-classic