java - 我们如何控制OSGI上资源的网页缓存?

标签 java osgi aem osgi-bundle sling

我需要缓存来自 AEM 的资源(图像和字体)。使用 SlingHttpServletRequest 我可以获取所有资源路径。那么我如何将实际资源放入浏览器缓存中。我使用 slingResponse.setHeader() 检查它。但仍然找不到将资源路径放入浏览器缓存的方法。

最佳答案

浏览器缓存使用 Cache-Control 进行控制 header 。理想情况下,需要在调度程序上进行设置。在标准设置中,调度程序未配置为缓存响应 header 。因此,当从缓存提供服务时,服务器上设置的任何 header 都不会用于后续请求。

使用mod_headers调度程序上的模块,用于发送您感兴趣的文件的 max-age 或过期值。

例如:要在浏览器上缓存所有静态资源 1 年

<LocationMatch "^\/etc\/designs\/my-project\/clientlibs-site\/(css|images|fonts|placeholders)\/.*">
  Header set Cache-Control "public, max-age=31536000"
</LocationMatch>

遇到缓存控制 header 时,浏览器将缓存资源。

关于java - 我们如何控制OSGI上资源的网页缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59106231/

相关文章:

maven - 如何处理抛出异常的 fop 字体缓存文件夹

java - com.adobe.aem.commons.assetshare.component 无法解析

java - CQ5 - 如何获取页面图片

java - 使用正则表达式提取和重新格式化时间戳是唯一的方法吗?

java - 如何获取两个本地时间 joda 的小时和分钟差异

java - playFramework 中 Scala View 模板的转换和实例

java - 在运行时将资源放在类路径上

java - Mac 版 Equinox 启动器 (org.eclipse.equinox.launcher.carbon.macosx) 版本 3.4.1 无法在 64 位 Mac 上运行?

具有泛型参数基础的 Java 泛型参数

gradle - 找不到ID为 'osgi'的插件