我正在建設一個網絡購物網站。每個銷售的產品都可以附帶多張圖片以及任意附件(如PDF和手冊等)。這些資源存儲在我們自己的ERP系統中,並通過它的遠程API進行訪問。實際上,文件可以駐留在任何地方 - 在數據庫中,在硬盤上,在網絡共享上等。API提供了訪問它的統一接口。如何高效地將元數據添加到.NET中的任意文件?
爲了提高性能,我打算將這些文件緩存在網絡服務器上。有一個版本計數器機制,可以讓我有效地確定文件何時發生變化並使緩存項無效。但是,我在哪裏存儲當前在緩存中的文件的版本號?緩存基本上是單個文件夾,可以通過Web服務器上的多個ASP.NET工作進程訪問。網站本身沒有數據庫 - 所有數據都來自ERP API。
理想情況下,這個數字將與文件本身以某種方式存儲在一起。所以,當文件被刪除(比如管理員決定清除緩存以提高磁盤使用率)時,元數據不會流連忘返。到目前爲止,我有兩個想法:
- 寫在一個ADS(備用數據流)。儘管通過.NET訪問它並不容易。圖書館存在,但我更喜歡更優雅的解決方案(我也不知道有關性能)。
- 將其追加到文件本身。我所知道的所有文件格式對於附加到文件的數據都很放鬆。但是,在傳輸內容之前,我需要將其刪除,這意味着我無法使用內置的
TransmitFile
-再次讓我擔心性能。
有沒有更好的辦法?
我曾考慮過這個問題,甚至試圖實現它,但是當版本號發生變化時它變得非常混亂。如果我不知道版本號(只是文件名),那麼我必須枚舉文件夾。更不用說潛在的併發問題了...... – 2011-03-20 09:52:14