我试图通过让 @Cached 知道我在控制器中调用的函数的参数来制作更好的 @Cached 注释。
所以我有这个动作:
public class ContextualCachedAction extends Action<ContextualCached> {
@Override
public Result call(Context ctx) throws Throwable {
try {
String key = makeKey(ctx);
Integer duration = configuration.duration();
Result result = (Result) Cache.get(key);
if (result == null) {
result = delegate.call(ctx);
//TODO find a way to cache only successful calls
Cache.set(key, result, duration);
}
return result;
} catch (RuntimeException e) {
throw e;
} catch (Throwable t) {
throw new RuntimeException(t);
}
}
private String makeKey(Context ctx) {
//makes the key from some parameters in the ctx.request()
}
}
我的问题是:只有当它是 Ok() 时,我才想缓存 delegate.call() 的结果。我该如何检查呢?有财产吗?一个实用程序?还是我需要 Ok().getClass().isInstance(result)?
感谢您的任何答案和提示。
PS:我为什么要这样做?因为我有一些调用会产生几种不同的结果。很少有结果可以缓存它们,因为我不想