我在网站里使用了system.runtime.cache 来缓存东西。我想定期删除这些缓存,另外写了个服务定期执行。但是却不知道如何去删除,直接使用Cache.Remove是不行的。
我在网站里使用了system.runtime.cache 来缓存东西。我想定期删除这些缓存,另外写了个服务定期执行。但是却不知道如何去删除,直接使用Cache.Remove是不行的。
你的思路是完全错误的。
所有的缓存框架最重的部分就是它的失效策略。
譬如对于你使用的System.Runtime.Cache,它默认有根据绝对时间过期,根据相对时间过期,根据依赖条件过期,具体见http://msdn.microsoft.com/zh-cn/library/system.runtime.caching.cacheitempolicy(v=vs.110).aspx
你需要做的就是根据你的需求来定义缓存的过期时间,而不是自己手工的移除缓存。
你使用的是进程内缓存,在外部的定时服务里肯定清不掉,服务里的Cache.Remove是remove掉服务进程内的缓存,它们是两个独立的个体。
外部服务是没办法直接访问你的网站所在进程的,提供两个方案:
1. 使用进程外的独立缓存,如memcache等,这个成本有点高,没太大必要。
2. 你的网站公开一个asmx或者其他形式,提供remove缓存的服务,外部服务定时调下这个借口。提醒:因为你的网站是公开的,所以自己保证接口的安全性,别被人刷了。