最初にrequest.path
は、script_root
の後に(paramsを除く)すべてです。たとえば、次のURLについて
等、http://127.0.0.1:5000/users/login/
、要求データがある:
request.path is: /users/login/
上記リンク、http://www.example.com/myapplication/page.html?x=y
から例のようなURLは、要求データがある:
request.path is: /page.html
Q. cache_keyとはどういう意味ですか、どうすれば使用できますか?
cache_key
は、特定のキャッシュされた値にアクセスするために使用されるキーです。あなたが知っているように、キャッシュはキーバリューストアです。
フラスコキャッシュではcache_key
が拡張によって生成されており、私たちはそれを自分で使用することは想定していません。
行うkey_prefix何Q.?
key_prefix
は、キャッシュされた値のcache_key
を生成するために使用されます。どのように正確に行われるかは、make_cache_key
sourceを参照してください。
Q.それはkey_prefixを使用する必要ですか?
のは、あなたが2つの異なるビュー機能からget_all_comments
を呼び出し、manage()
を言うと、view()
されているとしましょう。また、key_prefix
を指定しないで、get_all_comments
を@cached
にキャッシングします。
get_all_comments
出力がでキャッシュされているあなたはがview
てポストにを閲覧初めてdefault keyのような:%s
がrequest.path
あるview/%s
の値が何であれview/view
またはview/module/view
、または、。リクエストのでcache_key
は、キャッシュからデータをview/manage
に変更し、古いview/view
ではありませんしている得るために適用されるので、あなたがmanage
を通じてポストを管理
次に、get_all_comments
出力は、キャッシュから読み込まれていません。パスが変更されました。
get_all_comments
ここでは、可能な限りキャッシュからデータを取得するのではなく、ビューの機能の間でキーが変更されているため、実際には両方の時間がデータベースから取得されます。あなたはall_comments
のようなkey_prefix
を指定した場合には
はしかし、その後、最初の時間のデータがDBから取得され、そしてcache_key
はまだall_comments
と値である次回は発見され、そのデータが代わりにDBのキャッシュからアクセスされます。
key_prefix
を使用すると明らかに上記のような場合があります。それ以外の場合は、関数が常に単一のパス/ビュー関数から呼び出され、デフォルトのものを使用するようにしても問題ありません。
注:
cache_key = decorated_function.make_cache_key(*args, **kwargs)
ニースの答え:cache_keyが生成される/すべてのリクエストに対して計算は、sourceを参照してください!ちょうど追加したければ、そのprefix_keyは戻り値がcache_keyとして使用される呼び出し可能なものでもかまいません。だから私はあなた自身のmake_cache_key関数を渡すために "乱用"することができると思います。ここの私の例を見てくださいhttp://stackoverflow.com/questions/9413566/flask-cache-memoize-url-query-string-parameters-as-well/14264116#14264116 – Smoe
@Smoeあなたは絶対に正しいです、['callable (key_prefix): cache_key = key_prefix() '](https://github.com/thadeusb/flask-cache/blob/master/flask_cache/__init__.py#L218) –