Git Product home page Git Product logo

api_response_cache's Introduction

api_response_cache's People

Contributors

okaryo avatar

Watchers

 avatar

api_response_cache's Issues

メモ

このパッケージを使うと嬉しいこと

  • 外部APIに対するリクエストを必要最小限にし、APIの負荷とコスト(特に従量課金の場合)をする削減
  • 外部APIの変更やサーバーダウンといったAPIに依存することで発生するリスクを最小限にする
  • ユーザーにとっては無駄なリクエストを送らなくて良いので端末フレンドリーなアプリ設計に近づけることができる

技術詳細

  • 外部APIのリクエスト結果をキャッシュする
  • キャッシュ保持期間内であれば、APIにリクエストを送らずにローカルキャッシュのデータを返す
  • エラーが起こればキャッシュを返すorエラーをそのまま返す
    • これは設定で選択できるようにする

まだ決まっていないこと

  • キャッシュ戦略について
    • 期間を設定するようなタイプと、x月x日までのような期日タイプがありそう
    • 期間タイプ
      • Durationを設定し、キャッシュの保持期間は最後に送ったリクエスト日時+Durationまでとする
    • 期日タイプ
      • キャッシュを保持するのは指定されたDateTimeまで
        • でもその場合ってキャッシュが効くのは最初の時期だけで、それが過ぎたら毎回リクエスト送ってしまうことにならん?
        • これはボツ
        • 期日タイプでやりたいことは、期間タイプ+日付を跨いだらキャッシュは使わないのようなことにすれば実現できそう

他のアイデア

  • アプリのバージョンが更新されたときは生存期間内であってもキャッシュからではなく、APIからデータを取得する
    • これも設定で選択可能にする
    • 一度設定してしまうとデータが一定期間固定化されてしまうので、アプリの更新に合わせてデータも最新にリフレッシュできると嬉しそう
  • APIのレスポンスによってはそれをそのままローカルストレージに保存してはまずそうなものもありそう
    • secureStorage: trueみたいなオプションでセキュアな保存方法を使えるようにするのもあり?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.