Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何有效地将大型文件从数据库发送到浏览器?_C#_Asp.net - Fatal编程技术网

C# 如何有效地将大型文件从数据库发送到浏览器?

C# 如何有效地将大型文件从数据库发送到浏览器?,c#,asp.net,C#,Asp.net,在我的web应用程序中,我正在处理文件。有些文件非常大。我使用Response.Write()将文件写入浏览器。对于较小的文件来说,这很好,但是对于较大的文件,这可能需要一段时间,并且带宽被充分利用 是否可以拆分大型文档并将其逐段发送到浏览器?是否有其他方法可以更快地将文档发送到浏览器 我将文档作为对象的属性保存。我不熟悉ASP.NET,但您可以将文件流缓冲到某种输出流 我的问题是,有没有可能 拆分大文档并发送它 一件一件地进入浏览器 这取决于文件类型,但通常不是。如果您要发送excel文件或w

在我的web应用程序中,我正在处理文件。有些文件非常大。我使用
Response.Write()
将文件写入浏览器。对于较小的文件来说,这很好,但是对于较大的文件,这可能需要一段时间,并且带宽被充分利用

是否可以拆分大型文档并将其逐段发送到浏览器?是否有其他方法可以更快地将文档发送到浏览器


我将文档作为对象的属性保存。

我不熟悉ASP.NET,但您可以将文件流缓冲到某种输出流

我的问题是,有没有可能 拆分大文档并发送它 一件一件地进入浏览器

这取决于文件类型,但通常不是。如果您要发送excel文件或word文档等内容,接收应用程序将需要所有信息(字节)才能完全形成文档。您可以将文档物理上分离为多个文档,这将允许您这样做。

您可以使用该方法将当前缓冲的数据发送到客户端(浏览器)

请注意,这有一些含义,如适当描述的

我自己也考虑过使用它,一个项目发送的文档变得相当大,我对将整个数据存储在内存中持谨慎态度。最后,我认为数据不够大,不足以成为一个问题


遗憾的是,MSDN文档对Flush的含义非常模糊,您可能必须使用Google进行故障排除。

如果带宽已被充分利用,那么除了在发送之前压缩文档之外,您无法“加速”。换句话说,拉上拉链

根据文档的不同(我知道你说的是.mht,但我们在这里讨论的是内容),你会看到大小有所下降。也许够了,也许不行


无论哪种方式,这都完全取决于要发送的内容量与可发送内容的管道大小。其中一个比另一个更难更改。

为什么不压缩文件并将其存储在数据库中,然后解压缩它以提取它

根据这些问题,您可以做很多事情:

  • 文件多久更改一次

  • 我真的需要数据库中的文件吗

  • 为什么不将文件路径存储在 数据库和磁盘上的文件

  • 无论如何,由于您的文件具有极高的带宽,并且您希望您的应用程序能够做出适当的响应,因此您可能希望使用AJAX异步加载文件。您可以为此使用WebHandler.ashx

    这里有几个例子:


    尝试设置IIS的动态压缩。默认情况下,它设置得相当低,但您可以尝试将其设置为更高的压缩级别,看看这有多大帮助。

    我正在向浏览器发送.mht文件。+1:同意。IIS应该能够在没有太多/任何代码解决方案的情况下处理此问题。感谢您向我指出.ashx文件。不知道。没问题,享受你的新玩具:)