ご挨拶!
キャッシュを手動でフラッシュすることなく、デプロイ時に新しいキャッシュを生成するために、memcached
キーのプレフィックスが付けられた Google App Engine セットアップを用意しました。os.environ['CURRENT_VERSION_ID']
開発でアプリケーションの 2 つのバージョンを同時に実行する必要が生じるまで、これは問題なく機能していました。もちろん、これはキャッシュに矛盾をもたらします。
キーのプレフィックスを付ける方法についての提案を探しています。基本的に、任意のバージョンがデプロイされたときにバージョン間で変化する変数が必要です。(まあ、キャッシュが完全に吹き飛ばされるので、これはあまり理想的ではありません。)
以下の可能性を考えていました。
RuntimeEnvironment
最新のキャッシュ プレフィックスを格納するエンティティを作成します。欠点: たとえキャッシュされていても、すべてのリクエストが遅くなります。他のバージョンをデプロイすると変更される可能性があるため、memcached にのみキャッシュできません。エンティティごとのバージョン番号を使用します。これにより、変更されていないエンティティに対してキャッシュをウォームに保つことができるという点で、非常に優れた粒度が得られます。欠点は、モデルが変更されたときにすべてのバージョンにプッシュする必要があることです。これは、本番環境にデプロイする前にモデルの変更をテストするために避けたいと考えています。
キープレフィックスを忘れてください。キーのグローバル名前空間。デプロイごとにキャッシュをフラッシュするスクリプトを作成します。これは実際には最初のアイデアと同じくらい良いように思えます: キャッシュは両方のシナリオで完全に吹き飛ばされ、これはランタイム エンティティのオーバーヘッドを回避します。
任意の考え、さまざまなアイデアを大歓迎します!