我想使用memcached来缓存我的控制器产生的响应。控制器本身就是Grails控制器,但没有关于这个问题的Grails特定的。如果我能弄清楚如何在Spring MVC,Struts(或类似的)应用程序中解决这个问题,我应该能够轻松地将解决方案迁移到Grails。
理想情况下,我想识别适合使用Java注释进行缓存的控制器方法。有人知道这个问题的现有解决方案吗?我应该强调一点,我对使用除memcached之外的任何缓存技术都不感兴趣。
谢谢, 唐
答案 0 :(得分:2)
上一张海报所链接的Simple Spring Memcached库实际上可以完成你需要做的事情。它并不仅限于DAO方法。您可以注释一个控制器方法来缓存它的响应就像注释DAO方法一样容易。
因此,如果您有一个名为SimpleController的Controller并且您想要缓存该控制器的响应,那么您可以执行以下操作
public class SimpleController implements Controller {
@ReadThroughSingleCache(namespace = "SimpleController", keyIndex = 0, expiration = 3600)
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
return new ModelAndView("index")
}
这会将Memcached中控制器的响应缓存一小时,并且任何与同一请求匹配的请求都将返回缓存的响应。
答案 1 :(得分:1)
Aaron,勇敢,
感谢您推荐我的项目:http://code.google.com/p/simple-spring-memcached/
Don,Aaron说SSM并不局限于DAO方法,但是他的例子有一些警告:
以下是一些代码示例:
public class SimpleController implements Controller {
private BeanWithAnnotatedMethod bean; // Injected resource
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
Object keyObject = Helper.generateAppropriateKey(request);
String result = bean.annotatedMethod(keyObject);
return new ModelAndView(result)
}
答案 2 :(得分:0)