local-storage:缓存多页面资源

时间:2018-04-06 21:07:04

标签: angularjs local-storage

我正在尝试缓存多页面资源,但是localStorage.set()只缓存了4页中的6页。有没有人有这样的问题?在内存中缓存所有这些页面的工作正常,但将其保存到localStorage是行不通的。我不知道有限制吗?我正在测试Chrome,它有足够的空间存放我正在存储的内容。

var promises = [];
    var catalogItems = {
      partInfo: [],
      partNumbers: []
    };
    getCatalogItems(apiConfig.url + 'api/catalogItems?projection=detail')
      .success(function(res) {
        var pages = res.page.totalPages;

        catalogItems = updateCatalogItems(res._embedded.catalogItems, catalogItems);

        if (pages > 1) {
          for (var i = 1; i <= pages; i++) {
            promises.push(
              getCatalogItems(apiConfig.url + 'api/catalogItems?page=' + i + '&size=1000&projection=detail')
            );
          }

          $q.all(promises).then(function(response) {
            for (var j = 0; j < response.length; j++) {
              catalogItems = updateCatalogItems(response[j].data._embedded.catalogItems, catalogItems);
            }
            deferred.resolve(catalogItems);
          });
        } else {
          deferred.resolve(catalogItems);
        }
      })
      .error(function(err) {
        deferred.reject(err);
      });
  }
  return deferred.promise;
}

function updateCatalogItems(data, catalogItems) {
  data.forEach(function(item) {
    catalogItems.partInfo.push(item);
    catalogItems.partNumbers.push(item.itemNumber);
    item.formattedDate = moment(item.lastModifiedDate).local().format('MM/DD/YYYY');
    item.active = item.active ? 'Y' : 'N';
  });
  localStorageService.set('catalogItems', catalogItems);
  return catalogItems;
}

1 个答案:

答案 0 :(得分:0)

localStorage对可以使用的内存量有限制。对于大多数主流浏览器,限制大约为10MB。 Chrome的限制为5MB,无法增加。

一种可能的解决方案是创建一个适用于您的缓存的服务。您可以将数据存储在那里,并使用getter / setter函数来获取/设置资源。