如何缓存OData feed?

时间:2013-06-24 09:01:24

标签: javascript caching odata

我正在开发基于HTML5,CSS和JavaScript等网络技术的OData客户端。

我想做的是以简单的方式缓存最新版本(V3)的OData Feed。

我可以使用HTML5的本地或会话存储来实现该功能。

但是,如果有任何缓存库,那么效率会更高。

我知道data.js,但它不能用于错误消息:“没有数据处理程序”

OData.defaultHttpClient.enableJsonpCallback = true;        
OData.read("http://localhost/OData/OData.svc/GetDatasets", function (data) {
    console.log(data);
},
function (err) {
    console.log(err);
});

我用错误信息搜索了它,所以我修改了这样的代码。

var textHtmlHandler = {
    read: function (response, context) {
        var contentType = response.headers["Content-Type"];
        if (contentType && contentType.indexOf("text/html") === 0) {
            response.data = response.body;
        } else {
            odata.defaultHandler.read(response, context);
        }
    },
    write: function (request, context) { }
}

OData.defaultHttpClient.enableJsonpCallback = true;
OData.read("http://localhost/OData/OData.svc/", function (data) {
    console.log(data);
},
function (err) {
    console.log(err);
},
textHtmlHandler);

现在它说:“ReferenceError”

我怀疑我的data.js代码是因为我不需要使用JSONP,因为它支持CORS。

$.ajax({            
    url: "http://cross-domain-address/OData/OData.svc?$format=json",
    type: "GET",
    crossDomain: true,
    dataType: "json",
    success: a,
    error: b
});

function a(d) {
    console.log(d);
}

function b(d) {
    console.log(d);
}

你有什么想法吗?

您可以为OData Feed建议缓存库或更正代码。

2 个答案:

答案 0 :(得分:1)

我为客户端开发了一个用于缓存数据的库。这是链接

Please Click here jquery.cache-1.0.0

答案 1 :(得分:0)

您可以使用J ayData library及其OData提供商 - OData cookbook with JayData来使用OData Feed 它在内部运行datajs,但为OData,WebSQL,SQLite和许多其他数据源提供相同的类型API - 因此您可以使用相同的语法将任何结果存储到浏览器中的dbs。

如果要在内存中缓存,可以尝试与JayData Pro一起打包的QueryCache module

免责声明:我是JayData开发团队的成员,随时可以了解有关库或OData的更多信息,希望我能够为您指出正确的博客帖子。