我在Adobe社区论坛上发布了一个类似的问题,但也建议在这里提问。
我正在尝试缓存与特定数据库关联的不同查询,并且需要能够刷新该数据库的所有查询,同时保持其他缓存查询不变。所以我想我会利用ColdFusion的ehcache功能。我创建了一个特定的缓存区域用于来自这个特定数据库的查询,因此我可以使用cacheRemoveAll(myRegionName)来刷新那些存储的查询。
由于我需要轻松缓存和检索每个不同的查询,我想我会将查询参数散列为一个唯一的字符串,我将用于每个查询的缓存键。这是我到目前为止尝试过的方法:
这种方法有意义吗?我想知道其他人是如何接近缓存密钥生成的。此外,“MD5”算法是否足以满足此目的,它是否可以保证唯一的密钥生成,还是需要使用“SHA”?
答案 0 :(得分:3)
更新:使用CF10中引入的cacheRegion
属性!
http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html
然后您需要做的就是指定cachedAfter
或cachedWithin
,并忘记如何生成唯一键。 CF将通过'散列'为您完成:
参考:http://www.coldfusionmuse.com/index.cfm/2010/9/19/safe.caching
我认为这是最简单的,除非您确实需要通过密钥获取特定查询,然后您可以使用cacheID
(CF10中引入的另一个新属性)提供您自己的哈希。