问题标签 [cachefactory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
578 浏览

angularjs - 如果工厂是单例,则不了解对 $cacheFactory 的需求

我对 AngularJs 比较陌生,我正在尝试用它构建一个单页应用程序。我的应用程序在内容管理站点中运行。我有 3 个工厂用于用户、组和站点功能。

我对使用 Angular 的 $cacheFactory 很感兴趣,但我不确定如果我的数据保留在工厂中会有什么好处,因为它是单例的。

例如,我的用户工厂有一个名为 allUsers 的对象。这个对象通过我的应用程序用于不同的视图。直观地说,它似乎应该被缓存,但我很难理解为什么因为这个对象在用户工厂中,可以从我的任何控制器访问。

0 投票
1 回答
476 浏览

javascript - 带有 $http 和 $resource 的异步 $cacheFactory

我正在尝试使用 $cacheFactory 在 $resource 之上实现异步缓存。

在 $http 源中四处寻找它似乎支持从缓存返回承诺。我会假设在那之后我可以简单地用缓存数据解决承诺或拒绝它并让 $http 做它的事情,然后将数据放回缓存中。问题是..我只是不工作。$http 真的支持承诺吗?

https://github.com/angular/angular.js/blob/master/src/ng/http.js#L895

这是 $http 处理缓存,你可以看到它确实检查了一个承诺是否正在返回(第 898 行)。但似乎解决或拒绝都只是从待处理队列中清除请求。我如何实际发送数据或单个 $http 以继续请求?

这是关于我要完成的工作的 Plunker。

http://plnkr.co/edit/TwXumrAunG9b5JKo5OlB?p=preview

0 投票
2 回答
4428 浏览

javascript - Angularjs cacheFactory:id 已经被占用

我正在使用 $cacheFactory 来存储应用程序的语言 JSON 文件,并且我在每个新路线上运行一个工厂方法,如下所示:

index.js

工厂.js

在第一页加载它工作,然后如果我浏览,而不刷新,验证/登录我得到一个控制台错误:

[$cacheFactory:iid] CacheId 'langCache' 已经被占用了!

似乎(因为我在每条路线上都调用工厂方法)它不能使用相同的 id !?

我实际上不知道该怎么做才能解决此问题,请提供任何帮助,谢谢。

0 投票
1 回答
1038 浏览

json - 缓存来自服务器的 json 响应并自动检测数据何时更改

我正在开发一个 Angular 应用程序,它调用服务器并获取 JSON 数据。我正在考虑缓存这个 JSON 数据。

尝试的方法:

1)我尝试使用 html5 localSorage 将数据保存在本地。但是,这样做的问题是,我应该手动设置过期时间,并且无法知道数据会如何偶尔更改。

2)我尝试使用 $cacheFactory ,但是这不会在刷新或页面导航之间缓存数据。

我正在寻找的解决方案,

我希望将数据保存在本地或缓存。并使用某种机制来检测服务器返回的数据是否发生了变化(JSON数据),然后才进行调用。

这有可能吗?

0 投票
1 回答
759 浏览

angularjs - 在 AngularJS 的工厂中实现缓存

我目前正在尝试在我的 Angular 应用程序中实现缓存服务,以减少端点的工作量并(希望)在我的界面上看到一些轻微的、可能可以忽略不计的加载时间。

我已经开始实现我自己的cacheService,这几乎是一个包装器$cacheFactory

然后我有datacontext它本质上是一个消耗我cacheService和的工作单元$http(我在那里有几个其他“存储库”,但只显示了我试图让它使用的那个)

然后我的角度控制器消耗datacontext

我现在面临的问题是,每当我调用 时context.rules.getAll(),它总是命中else语句,意思rules是未定义的,所以它从不使用缓存,它只是再次调用我的 API,获取数据,缓存它(该部分有效,我已经通过在将其放入缓存后直接从缓存中提取来测试它),然后返回承诺。一遍又一遍。

有人能指出我不明白这应该如何工作吗?

0 投票
2 回答
89 浏览

angularjs - 在同一个 Angular 模块中访问工厂

在我的 Angular 应用程序中,我有一些资源模块,每个模块都包含一些cache工厂。

例如,

我有一些用于缓存从服务器接收到的值。

问题是有时我想清除所有缓存。因此,我想将所有内容cacheFactories放入一个CacheCentralApp模块中,并通过一次调用删除所有缓存。

问题是,我不知道有什么方法可以访问我模块中的其他工厂。例如,如果我创建一个模块CacheCentralApp,并在其中声明提供cacheFactorys 的工厂,我如何在其中创建一个调用removeAll()每个模块的函数cacheFactory

0 投票
1 回答
1290 浏览

angularjs - 从 Angular cacheFactory 获取密钥

当我列出 $cacheFactory 对象时,它有几种方法,但我没有看到实际的键/值缓存。

假设您正在查看 $http 缓存,$cacheFactory($http) 如何获取键列表,或者理想情况下,获取当前缓存的键和值?

0 投票
0 回答
382 浏览

angularjs - 如何为angularjs在手机缓存中存储持久数据

我想在手机的缓存中存储一​​些数据,比如 localStorage,但是 localStorage 并不安全。

我从 serviceAPI 获得了一些存储到 cacheFactory 的数据。在应用程序关闭之前我可以使用这些数据,但是当我重新启动应用程序时,保存的数据是未定义的。

我想找到一种将信息存储在手机缓存而不是会话缓存中的方法。我怎样才能做到这一点?

0 投票
1 回答
811 浏览

angularjs - 在 AngularJS 中捕获 GET 请求的完整 URL,包括查询参数

我正在使用http拦截器。当我发出 Restangular GET 请求时,我确实看到了所有值。这是我的请求拦截器的代码。

配置值:http: //i.imgur.com/l0IsXbJ.png

不幸的是,准备手动捕获的参数并不能 100% 保证它会匹配缓存的内容。我注意到 cacheFactory 会检查所请求的确切字符串。因此,如果我们的 GET 请求的查询参数是 age=12&name=scott,那么在我们的 http 拦截器上,我们以另一种方式准备它,将 name 先放在 age(name=scott&age=12) 之前,cacheFactory 将找不到它。

所以我试图寻找一个角度服务或工厂,它将返回与我们提出的请求相等的完整 URL。我试过 $location 但它没有给出完整的 GET 请求。

0 投票
2 回答
924 浏览

javascript - 有什么方法可以获取角度 $cacheFactory 中的所有键?

我知道在 npm/bower 上有另一个名为 angular-cache 的库。但是添加一个新库是我工作的一个过程。所以我想使用 $cacheFactory 或核心 Javascript 函数来解决这个问题。

我在stackoverflow中看到了很多关于获取hasmap的所有键的响应,所以我尝试了这个:

控制台上的输出很奇怪。它们是 $cacheFactory 中函数的名称(删除、销毁、信息等)