【发布时间】:2011-03-20 09:36:49
【问题描述】:
我正在建立一个网络购物网站。出售的每个产品都可以附有几张图片以及任意附件(如带有手册的 PDF 等)。这些资源存储在我们自己的 ERP 系统中,并通过它的远程 API 访问。实际上,文件可以驻留在任何地方 - 数据库、硬盘驱动器、网络共享等。API 提供了访问它的统一接口。
为了提高性能,我打算将这些文件缓存在网络服务器上。有一个版本计数器机制可以让我有效地确定文件何时更改并使缓存条目无效。但是,我在哪里存储当前在缓存中的文件的版本号?缓存本质上是一个文件夹,可由网络服务器上的多个 ASP.NET 工作进程访问。网站本身没有数据库 - 所有数据都来自 ERP API。
理想情况下,这个数字会以某种方式与文件本身一起存储。这样当文件被删除时(例如,管理员决定清除缓存以提高磁盘使用率),元数据就不会徘徊。到目前为止,我有两个想法:
- 将其写入 ADS(备用数据流)中。不过,通过 .NET 访问它并不容易。存在库,但我更喜欢更优雅的解决方案(我也不知道性能)。
- 将其附加到文件本身。我所知道的所有文件格式对于附加到文件的数据都非常宽松。但是我需要在传输内容之前将其删除,这意味着我无法使用内置的
TransmitFile- 再次让我担心性能。
有没有更好的办法?
【问题讨论】:
标签: .net performance file metadata