Caching Worklight适配器响应头缓存控制

Caching Worklight适配器响应头缓存控制,caching,ibm-mobilefirst,cache-control,worklight-adapters,worklight-server,Caching,Ibm Mobilefirst,Cache Control,Worklight Adapters,Worklight Server,我创建了一个HTTP适配器 那很好 这是rss getStories的示例 function getStories(interest) { path = getPath(interest); var input = { method : 'get', returnedContentType : 'xml', path : path }; return WL.Server.invokeHttp(input); }

我创建了一个HTTP适配器

那很好

这是rss getStories的示例

function getStories(interest) {
    path = getPath(interest);

    var input = {
        method : 'get',
        returnedContentType : 'xml',
        path : path
    };


    return WL.Server.invokeHttp(input);
}
我获得了如下标题信息的成功响应:

Cache-Control →no-cache, no-store, must-revalidate
Content-Length →
Content-Length
The length of the response body in octets (8-bit bytes) 
9220
Content-Type →application/json; charset=UTF-8
Date →Thu, 19 Jun 2014 12:46:12 GMT
Expires →Sat, 26 Jul 1997 05:00:00 GMT
P3P →policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
X-Powered-By →Servlet/3.0
客户端应用程序读取HTTP头信息,因此不会缓存响应

如何启用缓存?
另外,如果您注意到“Expires”(过期)也是1997年的,我不知道它是如何以及从何处获取该日期的。

Worklight会从后端服务返回未更改的标题。如果仍然希望更改标头,则可以在Worklight适配器中进行更改。 我从这篇文章中得到了以下解决方案的灵感:

我创建了标准Worklight cnn适配器(新建->Worklight适配器->HTTP适配器),并为其命名(changeHeadersAdapter)

然后在changeHeaderAdapter-impl.js中,我将getStories过程更改为:

function getStories(interest) {
path = getPath(interest);

var input = {
    method : 'get',
    returnedContentType : 'xml',
    path : path
};

var backendResponse = WL.Server.invokeHttp(input);

if(backendResponse.isSuccessful && backendResponse.statusCode == 200){ //For simplicity, considering only 200 as valid
    //Do something interesting with the data
    backendResponse.responseHeaders['Cache-Control'] = "public, max-age=0";
}
else{
    backendResponse.isSuccessful = false; //Overwrite to failure
}

return backendResponse;
}

如您所见,我将缓存控制参数更改为“public”(通常它将返回“private”)


我想这回答了你的问题。请让我知道。

只是对过期日期的评论,我认为当服务器想要使cookie过期时,它会在过去设置一个日期来强制客户端使cookie过期。我从服务收到的头响应有一些过期日期,比如说提前2天。但该报头成为适配器响应的有效负载。并且对客户端的头响应具有无效的日期和缓存控制。因此,据我所知,Worklight server上应该有一些将在其中发挥作用的配置。