angularjsキャッシュの詳しい説明

php中世界最好的语言
リリース: 2018-03-19 14:22:24
オリジナル
1395 人が閲覧しました

今回は、angularjsキャッシュの詳細な説明と、angularjsキャッシュを使用する際の注意事項について説明します。実際のケースを見てみましょう。

1. キャッシュとは何ですか?

キャッシュは、将来のリクエストをより速く処理できるようにデータを透過的に保存するコンポーネントです。

キャッシュが処理できるリクエストが増えるほど、システム全体のパフォーマンスが向上します。

2. Angular でのキャッシュ

2.1 $cacheFactory の概要

$cacheFactory は、すべての Angular サービスのキャッシュ オブジェクトを生成するサービスです。明示的に作成しなくても、$cacheFactory は内部的にデフォルトのキャッシュ オブジェクトを作成します。

キャッシュ オブジェクトを作成するには、$cacheFactory を使用して ID を持つキャッシュを作成できます:

var cache = $cacheFactory('myCache');
ログイン後にコピー
この $cacheFactory メソッドは 2 つのパラメーターを受け入れることができます:

cacheId (

String): このcacheId は、キャッシュ名。 get() メソッド経由でキャッシュ名を使用して参照できます。

容量: この容量は、任意の時点でキャッシュを使用して格納および保存されるキャッシュのキーと値のペアの最大数を表します。

2.2 キャッシュ オブジェクト

キャッシュ オブジェクト自体には、キャッシュと対話するために使用できる次のメソッドがあります。

info(): info() メソッドは、キャッシュ オブジェクトの ID、サイズ、オプションを返します。

put(): put() メソッドを使用すると、任意の JavaScript オブジェクトキー (文字列) を値の形式でキャッシュに入れることができます。 cache.put("hello","world");put() メソッドは、キャッシュに置いた値を返します。

get(): get() メソッドを使用すると、キーに対応するキャッシュ値にアクセスできます。キーが見つかった場合はその値を返し、見つからなかった場合は unknown を返します。 cache.get("hello");remove() : Remove() 関数は、キーと値のペアが見つかった場合にキャッシュから削除するために使用されます。見つからない場合は、 unknown を返します。 ache.remove("hello");
removeAll(): RemoveAll() 関数は、キャッシュをリセットし、キャッシュされたすべての値を削除するために使用されます。
destory(): destory() メソッドは、指定されたキャッシュへのすべての参照を $cacheFactory キャッシュ レジストリから削除するために使用されます。

3. $http のキャッシュ

Angular の $http サービスは、ID $http のキャッシュを作成します。

$http リクエストでデフォルトのキャッシュオブジェクトを使用するのは簡単です。$http() メソッドを使用すると、それにキャッシュ パラメータを渡すことができます。

3.1 デフォルトの $http キャッシュ デフォルトの $http キャッシュは、データが頻繁に変更されない場合に特に便利です。次のように設定できます:

$http({
    method: 'GET',
    url: '/api/users.json',
    cache: true  //设置为true只是用来使用$http默认的缓存机制});
ログイン後にコピー
これで、$http 経由の URL /api/user.json へのすべてのリクエストは、デフォルトの $http キャッシュに保存されます。

この $http キャッシュ内のリクエスト キーは完全な URL パスです。

必要に応じて、このデフォルトの $http キャッシュを操作することもできます (たとえば、増分変更を思い出させるために別のキャッシュされていないリクエストを開始した場合、デフォルトの $http リクエストでこのリクエストをクリアできます)。

 cache = $cacheFactory('$http' usersCache = cache.get('http://example.com/api.users.json'cache.remove('http://example.com/api.users.json'cache.removeAll();
ログイン後にコピー
        var cache = $cacheFactory.get('$http');        if(cache.get('cacheData')){
            console.log(cache.get('cacheData'));
        }else{
            helloService.play().then(                function (data) {
                    cache.put("cacheData", data);  //往缓存中放入数据
                    console.log(data);
                }
            );
        }
ログイン後にコピー

3.2 カスタム キャッシュ

場合によっては、キャッシュをより詳細に制御し、キャッシュ パフォーマンスのルールを作成することができます。これには、$http リクエストを使用するための新しいキャッシュを作成する必要があります。

カスタム キャッシュを介して $http リクエストを行うのは簡単です。ブール値パラメータ true をリクエストに渡す代わりに、キャッシュ インスタンスを渡すことができます。

var myCache = $cacheFactory('myCache');
$http({
  method: 'GET',
  utl: '/api/users.json',
  cache: myCache
});
ログイン後にコピー
小さなデモ: キャッシュ サービスを定義し、使用したいコントローラーに

Dependency Injection を直接使用します。

define([   'angularModule'],function(app){
    app.factory('myCache', ['$cacheFactory', function($cacheFactory){        return $cacheFactory('myCache');  //自定义一个缓存服务    }])
});
ログイン後にコピー
        //自定义缓存,有缓存就从缓存里取,否则就发送请求
        if(myCache.get('cacheData')){
            console.log(myCache.get('cacheData'));
        }else{
            helloService.play(myCache).then(                function (data) {
                    myCache.put("cacheData", data);
                    console.log(data);
                }
            );
        }
ログイン後にコピー
            cache:只是为了可以使用默认$http的缓存机制
            play : function (myCache) {                return httpRequestService.request({
                    method : 'get',
                    url : 'http://localhost:8080/hello/play',
                    cache : myCache
                })
            }
ログイン後にコピー
これで、$http はデフォルト キャッシュの代わりにカスタム キャッシュを使用します。

4. $http のデフォルト キャッシュを設定する

$http リクエストを行うたびに、キャッシュ インスタンスを渡すのは不便です (特にリクエストごとに同じキャッシュを使用する場合)。

其实可以在模块的 .config() 方法中通过 $httpProvider 设置 $http 默认使用的缓存对象。

angular.module('myApp', []).config(function($httpProvider) {
  $httpProvider.defaults.cache = $cacheFactory('myCache', {capacity: 20});
});
ログイン後にコピー

这个 $http 服务不再使用它为我们创建的默认缓存;它会使用我们自定义的缓存,实际上这就是一个近期缓存最久未使用算法① (Least Recently Used,LRU)。

LRU缓存根据缓存容量只保留最新的缓存数目。也就是说,我们的缓存容量为20,因此会缓存前20个请求,但是进入第21个请求时,最近最少使用的请求条目就会从缓存中被删除。这个缓存自身会负责具体哪些要维护,哪些要移除。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

知名的网站前端布局分析

在前端中的html基础知识 
vue插件实现移动端轮播图

以上がangularjsキャッシュの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート