CacheControl 为配置与 Cache-Control 头相关的设置提供支持,并在许多地方被接受为参数:
虽然 RFC 7234 描述了 Cache-Control 响应头的所有可能的指令,但 CacheControl 类型采用了面向使用情况的方法,重点关注常见的情况:
// 缓存 1 小时:Cache-Control: max-age=3600
CacheControl ccCacheOneHour = CacheControl.maxAge(1, TimeUnit.HOURS);
// 防止缓存:Cache-Control: no-store
CacheControl ccNoStore = CacheControl.noStore();
// 在公共和私有(public and private)缓存中缓存 10 天
// 公共缓存不应转换响应
// 生成的响应头为:Cache-Control: max-age=864000, public, no-transform
CacheControl ccCustom = CacheControl.maxAge(10, TimeUnit.DAYS).noTransform().cachePublic();
WebContentGenerator 还接受一个更简单的 cachePeriod 属性(以秒为单位定义),其作用如下:
- 一个 -1 的值不会生成一个 Cache-Control 响应头。
- 一个 0 值可以通过使用
Cache-Control: no-store
指令来防止缓存。 n > 0
的值通过使用Cache-Control: max-age=n
指令将给定的响应缓存 N 秒。