我正在建立一个网站购物网站。每个销售的产品都可以附加几张图片以及任意附件(如带有手册的PDF等)。这些资源存储在我们自己的ERP系统中,并通过它的远程API访问。实际上,该文件可以驻留在任何地方 - 在数据库中,在硬盘驱动器上,在网络共享上等.API提供了访问它的统一接口。
为了提高性能,我打算在Web服务器上缓存这些文件。有一个版本计数器机制,可以让我有效地确定文件何时更改并使缓存条目无效。但是,我在哪里存储当前在缓存中的文件的版本号?缓存本质上是一个文件夹,可以由Web服务器上的多个ASP.NET工作进程访问。网站本身没有数据库 - 所有数据都来自ERP API。
理想情况下,这个数字会以某种方式与文件本身一起存储。因此,当文件被删除时(例如,管理员决定清除缓存以提高磁盘使用率),元数据不会留下来。到目前为止,我有两个想法:
TransmitFile
- 再次让我担心性能。还有更好的方法吗?
答案 0 :(得分:3)
如果它只是一个版本号,您是否考虑将其包含在文件名中?例如:
foo.txt.v131
对于foo.txt的第131版。这种方法的一个很好的特性是你可以编写文件的新版本(例如132),而网络服务器仍然可以读取131.你仍然需要解决所有的交换语义当然..
答案 1 :(得分:0)
如果您知道产品正在发生变化,通常可以每小时使缓存无效。
更高级的方法是在DB版本中存储每个缓存文件的CRC值。然后运行后台服务(例如,通过Cron)来检查文件是否正在发生变化然后无效。