2016-11-20 71 views
0

我有一個場景,上傳的每個文件可能是任何MIME類型都應該加密,並且在使用時想要下載它們應該被解密。內存流vs文件流靜態內容下載

爲此,我解密了一個請求的文件並將該文件保存在臨時位置。 我的解密方法通過讀取加密的文件流寫入文件流。

現在我應該改變我的算法,將加密的文件流保存到內存流 並直接從內存流下載,而不是寫入文件流並下載該文件。

就性能而言,在這種情況下會更好的文件流或內存流。

我在想,如果多個用戶請求多個大文件,可以說100個不同的用戶請求100個不同的文件。在這種情況下,內存可能會用完,我們可能會遇到一些不必要的麻煩。

我應該執行哪一個。

+0

您是否考慮過使用類似EFS的東西,而磁盤加密在IO鏈中處理得更高?這樣你就不需要關心你的應用程序邏輯和文件加密。 – Dai

+0

@戴我不知道EFS。感謝您提供的信息,我將通過sysadmin諮詢這方面的信息,併爲我的方案尋找可能性。 –

回答

0

您是否考慮直接輸入NetworkStream進行輸出?你將不需要內存,也不需要磁盤空間。如果您希望將緩衝BufferedStream中的數據作爲中間數據庫來提高性能。

如果直接或緩衝流式傳輸不適合您,則正確答案取決於您的要求。你需要知道你的文件的大小和預期的請求數量。如果您認爲您的Web服務器內存可以處理它,並且您需要增加的性能,那就去做吧。否則,你應該在硬盤上緩衝。記住:你只需要足夠的表現,而不是完美的表現。

+0

'NetworkStream'不適合我。 目前我們只允許有限大小的文件(小於50MB),我們預計文件每小時的請求少於100個。在這種情況下,我們的服務器可以處理。因此,我應該去MemoryStream。 –