2016-11-20 70 views
0

我有一个场景,上传的每个文件可能是任何MIME类型都应该加密,并且在使用时想要下载它们应该被解密。内存流vs文件流静态内容下载

为此,我解密了一个请求的文件并将该文件保存在临时位置。 我的解密方法通过读取加密的文件流写入文件流。

现在我应该改变我的算法,将加密的文件流保存到内存流 并直接从内存流下载,而不是写入文件流并下载该文件。

就性能而言,在这种情况下会更好的文件流或内存流。

我在想,如果多个用户请求多个大文件,可以说100个不同的用户请求100个不同的文件。在这种情况下,内存可能会用完,我们可能会遇到一些不必要的麻烦。

我应该执行哪一个。

+0

您是否考虑过使用类似EFS的东西,而磁盘加密在IO链中处理得更高?这样你就不需要关心你的应用程序逻辑和文件加密。 – Dai

+0

@戴我不知道EFS。感谢您提供的信息,我将通过sysadmin咨询这方面的信息,并为我的方案寻找可能性。 –

回答

0

您是否考虑直接输入NetworkStream进行输出?你将不需要内存,也不需要磁盘空间。如果您希望将缓冲BufferedStream中的数据作为中间数据库来提高性能。

如果直接或缓冲流式传输不适合您,则正确答案取决于您的要求。你需要知道你的文件的大小和预期的请求数量。如果您认为您的Web服务器内存可以处理它,并且您需要增加的性能,那就去做吧。否则,你应该在硬盘上缓冲。记住:你只需要足够的表现,而不是完美的表现。

+0

'NetworkStream'不适合我。 目前我们只允许有限大小的文件(小于50MB),我们预计文件每小时的请求少于100个。在这种情况下,我们的服务器可以处理。因此,我应该去MemoryStream。 –