tomcat - 如何在 Tomcat 7 中缓存请求结果?

标签 tomcat tomcat7 jax-rs cdi

我的 Web 应用程序中有一些路由需要缓存其结果。

示例:domain.com/client/1

此路由在我的数据库中进行一些查询,生成 1~2mb 的 JSON。我想缓存这条路线的结果。但我也想在一分钟内过期。如何最好地做到这一点?

最佳答案

对于服务器端缓存,您可以查看 JCACHE (JSR 107)。

缓存解决方案,例如 EhcacheInfinispan实现 JSR 107 .

无穷无尽

例如,使用 Infinispan,您可以为缓存条目设置生命周期:

Configuration configuration = new ConfigurationBuilder()
                                      .expiration()
                                      .lifespan(60, TimeUnit.SECONDS)
                                      .build();

Cache<Object, Object> cache = new DefaultCacheManager(configuration).getCache();
cache.put("key", "value");
cache.remove("key");

要使用 Infinispan,只需在 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-embedded</artifactId>
    <version>8.0.1.Final</version>
</dependency>

如果您不使用 Maven,请从 Infinispan download page 下载它.

Guava

您还可以查看 cache API provided by Guava :

Cache<Object, Object> cache = CacheBuilder.newBuilder()
                                  .expireAfterWrite(60, TimeUnit.SECONDS)
                                  .build();

cache.put("key", "value");
cache.invalidate("key");

要使用它,请将以下依赖项添加到您的 pom.xml:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

关于tomcat - 如何在 Tomcat 7 中缓存请求结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631758/

相关文章:

java - 使用 apache tomcat 部署 JRuby WAR 文件后出错??为什么?

java - 使用 Tomcat : Providing multiple projects' dependencies? 部署 Eclipse Web 应用程序

tomcat - 用于简单运行脚本的最小安全 Web 服务器

java - 如何使用 Java 返回部分 JSON 响应?

mysql - ${Env.CATALINA_HOME} 在 openshift 中不退出

java - 如何从部署为 .war 文件并在 Tomcat 5.5 中运行的 servlet 访问配置文件?

java - Eclipse Tomcat 实例试图从不在源代码中的包初始化 spring bean

java - MultipartConfig 注释/servlet 配置

error-handling - 来自 Jersey 的Dropwizard错误消息

jax-rs - 是否有一种无需部署即可集成测试 JAX-RS 服务的机制(例如 MockMVC)?