我有一个程序覆盖了我的网站所需的某些文件集,但是我网站上的流量增加了很多,以至于我现在得到错误文件正在使用中。这导致它无法更新文件..
此程序每5分钟运行一次,以更新指定的文件。
我让这个程序处理文件而不是程序的写入的原因是因为我还需要将它更新到不同的Web服务器(通过ftp)。通过这种方式,我还确保文件每5分钟更新一次,而不是在用户查看页面时更新。
因此,我的问题是;我可以告诉IIS7.5在更新之后(例如5秒到1分钟)缓存文件吗?这应该确保下次程序运行以更新文件时不会遇到任何问题。
答案 0 :(得分:1)
最简单的解决方案是更改该程序刷新文件以将新信息存储在数据库中,而不是文件系统中。
但是如果你不能使用数据库我会采取不同的方法,将文件内容存储到System.Web.Caching.Cache上次修改时间,然后检查文件是否更改,如果不使用缓存版本,如果在同一缓存变量中更改了存储新内容和时间。
当然,您必须检查是否可以读取文件,然后才刷新缓存内容,如果您无法读取文件,则只需从缓存中获取最新版本。
初始读取文件必须在application_start中以确保缓存已初始化,并且您必须等到可以读取文件以便首次将其存储在缓存中。
检查您是否可以从文件中读取的最佳方法是捕获异常,因为检查后可能会发生锁定,请参阅此帖子:How to check for file lock?