2

ユーザーに関する情報を提供する非常に小さなREST API(PHPを使用)を開発しました(ユーザーの更新と作成も行いますが、質問には関係ありません)。利用可能な呼び出しを表示するだけです(ところで、JSON出力):

/api/users/54216

/api/users/54216?fields=id,name

/api/users/54216/photos

54216ユーザー ID の例です。

今日まで、私はキャッシュを使用して html ページを表示するように保存するだけでした。実際にはそれほど複雑ではありませんでした。キャッシュを使用してデータのみを保存することはありませんでした。

これらの呼び出しを保存するにはどうすればよいですか? また、どのように使用すればよいですか? 私の目標は(私が思うに..)JSONX分で一度データをファイルに保存し、必要に応じてファイルキャッシュとdecodeそれを取得することです。

さらに、ユーザーの特定の情報をキャッシュする方法を教えてください。呼び出し番号 1 はすべての情報を出力し、呼び出し番号 2 は特定のフィールドのみを出力するため、実際には効果がないため、2 つのキャッシュ ファイルを使用したくありません。

私はこのセクションに参加したことがないので (キャッシュ [json] データと REST API、初めてです)、非常に混乱しています。

編集:

私はサーバー側のキャッシュについて話しています。

4

2 に答える 2

2

HTTPキャッシュを読むことをお勧めします

最初の重要な原則は、HTTP キャッシングがどのように機能するかを理解することです。基本的には、TTL (キャッシュ制御) と古いチェック (ETag) の 2 つの部分があります。リソースがオリジンサーバーによって生成されたとき、それがなくなったと考える必要があります。あなたはもはやそれをコントロールすることはできず、クライアントにそれをどうするかを提案するだけです. あなたが持っている2つのメカニズムは、TTL(クライアントがオブジェクトをキャッシュに保持してからチェックバックするまでの時間)と古いチェック(返されたリソースのバージョン)です。これは新しいGETリクエストでオリジンサーバーで、「このバージョンを持っていますが、まだ良いですか」と言います。オリジンサーバーに「はい」と言う機会を与え、それを使用し続け、まだ有効な場合は新しい TTL を提供します。

必要な効果を得るには、これら 2 つのコントロールをさまざまな方法で使用する必要があります。たとえば、決して変更されないファイル (ビルドの css など) を提供する場合、非常に長い TTL を設定し、etag を設定できません。あまり頻繁には変更されないが、変更が迅速に行われる必要がある場合 (予約のパーティー メンバーなど) には、低い TTL (1 分など) と ETag を設定します。この 2 番目の例では、1 分の低い TTL を設定して、オリジン サーバーを圧倒しないようにクライアントからのバーストを支援し (スケール)、検証する方法がある場合、ETag により、オリジン サーバーは予約オブジェクトの構築をスキップできます。現在の有効な ETag は、予約全体を構築するよりも高速です。もう 1 つの例は、頻繁に変更されず、変更されたときに、ゆっくりと伝播する可能性があります (ユーザーの広告推奨プロファイルのように)。より高い TTL (6 時間など) を設定でき、ETag についてあまり心配する必要はありません (それでも有用ですが)。参照:https://groups.google.com/d/msg/api-craft/YJMH0XMQJIM/HtdAPEXbQLMJ

または、サーバー側でキャッシュする場合は、memcached (チュートリアル)をご覧ください。

また、ワニスなどのリバース プロキシ キャッシュ ソリューションも参照してください。

于 2013-01-18T04:16:06.160 に答える
0

https://devcenter.heroku.com/articles/ios-network-caching-http-headers

これは iOS の観点からのキャッシングについて説明していますが、Cache-Control、max-age、ETags、Last Modified という用語はよく説明されています。

于 2013-11-18T11:05:06.417 に答える