在查看JQuery延迟承诺的潜在用例时,我发现缓存是潜在的用途之一。这带来了以下问题:在使用现代浏览器和智能客户端(Jquery、任何现代MVC等)时,我甚至需要担心自己缓存什么吗?我使用的是简陋的堆栈,我的印象是缓存在默认情况下确实会发生。标头中有一个Etag字段,确保服务器不会发送两次相同的信息。第二次,客户端将得到304代码与空响应体。那么,是否有任何需要在前端手动实现缓存的用例?谢谢!
发布于 2015-10-02 17:14:26
整个承诺的概念旨在简化JavaScript程序员异步计算的处理。我可以想象一个有效的用例,当您使用拒绝的承诺提供一些预定义的数据时,但这不是您所称的“缓存”。
如果您有一个延迟对象来处理对异步API的某种请求,则应该由您为静态数据实现缓存层,它可能是.then()函数的一部分。浏览器将向API发送尽可能多的请求,就像在代码中一样,服务器将以相同数量的响应响应,除非它有自己的缓存层。
用于缓存异步计算中的数据的注释用法的Here is an example。
// *specialized* function for, say, network requests,
// where caching is desired. In this case, we're caching
// promises by the URL they're fetching
var fetch = (function () {
var cache = {};
return function (url) {
cache[url] = cache.hasOwnProperty(url) ? cache[url] : new Promise(
/* request magic goes here */
);
return cache[url];
};
});TL:博士
您不使用缓存承诺,而是为异步计算实现自己的缓存层(为此可以使用记忆模式)。如果您将延迟对象用于此或常规回调,这并不重要。
https://stackoverflow.com/questions/32911913
复制相似问题