AEM - 如何缓存页面范围的模型?
AEM - How to cache model for page scope?
我有一个吊索模型需要在初始化时做一些昂贵的操作。这些与页面范围相关,意味着基于 currentPage
属性。因此,每次页面调用只初始化一次模型是有道理的。
我在 上找到了一篇关于此的不错的文章,他们将 Model
-注释的 cache
属性 设置为 true。
但不幸的是,这仅适用于每个资源。
因此设置 cache=true
属性 模型会为通过 data-sly-use
调用它的每个组件进行初始化。它只会帮助我们在同一组件(资源)中调用 data-sly-use
,但这没有帮助。
我能否以某种方式为 页面 请求的整个生命周期缓存模型?
SlingHttpServletRequest 是 HttpServletRequest 的包装器,支持 servlet api.
提供的 setAttribute 和 getAttribute 方法
设置属性:
slingRequest.setAttribute(ATTRIBUTE_NAME, myobject);
检索:
//check for null
MyClass myobject = (MyClass) slingRequest.getAttribute(ATTRIBUTE_NAME);
我有一个吊索模型需要在初始化时做一些昂贵的操作。这些与页面范围相关,意味着基于 currentPage
属性。因此,每次页面调用只初始化一次模型是有道理的。
我在 Model
-注释的 cache
属性 设置为 true。
但不幸的是,这仅适用于每个资源。
因此设置 cache=true
属性 模型会为通过 data-sly-use
调用它的每个组件进行初始化。它只会帮助我们在同一组件(资源)中调用 data-sly-use
,但这没有帮助。
我能否以某种方式为 页面 请求的整个生命周期缓存模型?
SlingHttpServletRequest 是 HttpServletRequest 的包装器,支持 servlet api.
提供的 setAttribute 和 getAttribute 方法设置属性:
slingRequest.setAttribute(ATTRIBUTE_NAME, myobject);
检索:
//check for null
MyClass myobject = (MyClass) slingRequest.getAttribute(ATTRIBUTE_NAME);