ホームページ ウェブフロントエンド jsチュートリアル angularjs カスタム キャッシュの使用例の詳細な説明

angularjs カスタム キャッシュの使用例の詳細な説明

May 10, 2018 am 10:36 AM
angularjs javascript カスタマイズ

今回はangularjsカスタムキャッシュの使用例について詳しく説明します。angularjsカスタムキャッシュを使用する際の注意点は何ですか?実際のケースを見てみましょう。

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

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

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

2. Angular でのキャッシュ

2.1 $cacheFactory の概要

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

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

var queue = $cacheFactory('myCache');
この $cacheFactory メソッドは 2 つのパラメータを受け入れることができます:

cacheId (String ): このcacheIdはキャッシュ作成時のID名です。 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 リクエストでこのリクエストをクリアできます)。

$http のデフォルトのリクエストを参照するには、次の ID を使用して $cacheFactory() を通じてキャッシュを取得するだけです:

var cache = $cacheFactory('$http');
ログイン後にコピー

制御下のキャッシュについては、必要に応じて、キャッシュされたリクエストの取得など、すべての通常の操作を実行できます。エントリがキャッシュからクリアされるか、キャッシュされた参照がすべて削除されます。

// 获取上一次请求的缓存
var 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
});
ログイン後にコピー

一个小demo:定义一个缓存服务,依赖注入到你要用的控制器中,直接使用

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 将会使用自定义的缓存而非默认缓存。

四、为 $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中文网其它相关文章!

推荐阅读:

FIFO/LRU实现缓存算法

nodejs连接mysql数据库步骤详解

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Netflix でカスタム アバターをすばやくセットアップする方法 Netflix でカスタム アバターをすばやくセットアップする方法 Feb 19, 2024 pm 06:33 PM

Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

Eclipseでショートカットキー設定をカスタマイズする方法 Eclipseでショートカットキー設定をカスタマイズする方法 Jan 28, 2024 am 10:01 AM

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

ediusカスタム画面レイアウトの操作手順 ediusカスタム画面レイアウトの操作手順 Mar 27, 2024 pm 06:50 PM

1. 下の図はediusのデフォルトの画面レイアウトです EDIUSのデフォルトのウィンドウレイアウトは横レイアウトのため、シングルモニタ環境では多くのウィンドウが重なってプレビューウィンドウがシングルウィンドウモードになります。 2. メニューバーの[表示]から[デュアルウィンドウモード]を有効にすると、プレビューウィンドウに再生ウィンドウと録音ウィンドウを同時に表示できます。 3. [表示メニューバー > ウィンドウレイアウト > 一般] でデフォルトの画面レイアウトに戻すことができます。また、ウィンドウをドラッグして好みのレイアウトにし、[表示 > ウィンドウ レイアウト > 現在のレイアウトを保存 > 新規作成] をクリックすると、自分に合ったレイアウトをカスタマイズして、よく使う画面レイアウトとして保存することもできます。ポップアップ [現在のレイアウトを保存] レイアウト] 小さなウィンドウにレイアウト名を入力し、OK をクリックします

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

ExcelでX軸とY軸をカスタマイズするにはどうすればよいですか? (Excelの軸スケールをカスタマイズする方法) ExcelでX軸とY軸をカスタマイズするにはどうすればよいですか? (Excelの軸スケールをカスタマイズする方法) Mar 14, 2024 pm 02:10 PM

Excel の表では、データの変化傾向をより直観的に確認するために座標軸を挿入する必要がある場合があります。表に座標軸を挿入する方法がまだ分からない友達もいると思いますが、次に Excel で座標軸のスケールをカスタマイズする方法を紹介します。座標軸の挿入方法: 1. Excel インターフェイスでデータを選択します。 2. 挿入インターフェイスで、クリックして縦棒グラフまたは棒グラフを挿入します。 3. 展開されたインターフェースで、グラフィックのタイプを選択します。 4. テーブルを右クリックして表示されるインターフェイスで、[データの選択] をクリックします。 5. 拡張されたインターフェイスで、カスタマイズできます。

See all articles