以下のようなキーが並んでいます。トップレベルのデータを表す特殊なキーです。始まっているキーはオブジェクトまでのパスから生成されたものです。形式で生成されたものです。引いており、上で説明した正規化戦略と結果が一致していることがわかります。各キーに対応する値は基本的にクエリの結果で返されたデータですが、参照先がキャッシュ内に存在する場合はそのキーだけを持つようになっています。オブジェクトを指すようになっています。次回のクエリ実行では、デフォルトではまずキャッシュのデータからクエリの結果を構築しようとし、データが足りればそのまま返して、足りなければサーバーに問い合わせることになります。Mutation書き込み操作を行うときにマスターデータとキャッシュの一貫性を気にする必要があります。発行したら、キャッシュされているリポジトリのデータも更新しなければいけません。なくば、キャッシュが維持されている間は画面にリポジトリ名の変更が反映されません。ドキュメントにまとめられています。以下では、それらを簡単に紹介するとともに、メリット・デメリットについてまとめます。最後にそれらを組み合わせた実践的な使い方を考察します。結果としてオブジェクトを取得し、それによってキャッシュを更新します。いうキーに対応するオブジェクトが更新されます。よる変更が反映されるべきクエリを明示的に引き直してキャッシュを更新します。引き直すといった場面が考えられるでしょう。そのオブジェクトを含むリスト」という場面が代表的な悩みのタネになりますが、この方法はその解決策の1つとなります。用いて、キャッシュを直接操作して更新を反映します。キャッシュに書き込むのが基本の形になります。オブジェクトの作成や削除に対応できるという点で2番目の方法と類似しています。キャッシュしないような設定にすることで、パフォーマンスや通信コストと引き換えに煩雑なキャッシュ更新操作を避けることができます。まとめられており、クエリごとに用途にあったポリシーを選択することができます。このメリット・デメリットは、キャッシュポリシーや扱うデータの特性に大きく依存するため、ここで一概にまとめるのは難しいでしょう。以上の手法をどのように組み合わせるか実際のアプリケーションでは、データの特性に応じて異なる戦略を取るのが効果的であると考えます。以下のようなことが考えられます。トップページの「新着コンテンツ」のような箇所では、ユーザーのコンテンツ操作に応じて頻繁にデータが更新される必要はないことが多いです。時の明示的な更新も考える必要がないかもしれません。ログインユーザーに見せる「自分のコンテンツ一覧」のような箇所では、ユーザーのコンテンツ作成・削除が直ちに反映されるのが望ましいでしょう。手法をとったり、キャッシュポリシーを必ずサーバーに問い合わせるものに設定するのは効果的です。ページ遷移がない分、通信のオーバーヘッドが目立ちやすい箇所なので、ブラウザ内の計算のみで完結することでユーザー体験を向上させることができるでしょう。動作についてまとめました。クエリの結果を正規化して保存しており、平らなキーバリュー型のデータ構造になっていることを説明しました。あとにどのようにキャッシュを更新したら良いかについてまとめました。キャッシュの更新は大きく分けて4つの方法があり、データの特性に合わせて戦略を変えたり、複数の方法を組み合わせるのが良いでしょう。学ぶ処理系解読の基礎〜Pythonの最も主要な処理系であるCPythonの入門記事です.はじめ...2014-12-08Haskellで簡単な正規表現を実装した【KMCアドベントカレンダー8日目】KMCアドベントカレンダー8日目の記事です。HaskellとPythonで実装した月別アーカイブはてなブログをはじめよう!yigarashiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。