人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

APIを介して情報を取得・表示するWEBプログラムにおいて、レスポンス内容がキャッシュされてしまいDBの最新状態を取得できない問題が起きています。
MySQLを直接覗くとテーブルにレコードが追加されているのに、ブラウザからリロードしてみても取得される情報が前回と同じになってしまいます。

WEBプログラムの構成は以下のようになっています。
■フロント
FW: AngularJS

■API
言語: Python
FW: Flask
WAS: uWSGI
HttpServer: nginx(nginx→uWSGIへリバースプロキシ)
RDB: MySQL


おそらく、nginxかuWSGIのどちらかがキャッシュする設定になっており最新の状態を返却しないのではないかと考えていますが、自身で明示的にconfigファイルや起動オプションにキャッシュの設定はしていないため、どこが原因かはっきりとしません。

このような症状の場合に、どこが原因と考えられますでしょうか。

●質問者: hogesuke
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tea_cup
●100ポイント

自分だったら、スーパーリロードしてみて、変化するかを確認します。
後は、フロント側から順に、httpのHeadリクエストの応答が、DB内容更新に追従しているかを確認してゆきます。
フレームワークを使ったことありませんので、細かいところは、他の方に譲りますが、『便利で超強力なWSGIサーバー uWSGI を使ってみよう - 檜山正幸のキマイラ飼育記』とか読むと、階層構造をブラウザで追うのもそれほど難しくなく見えます。
何かのヒントになれば幸いです。


hogesukeさんのコメント
回答ありがとうございます。 スーパーリロードでも取得されるものは変わりませんでした。

質問者から

MySQLのクエリキャッシュは無効であることを確認しました。

Variable_name Value
query_cache_limit 1048576
query_cache_min_res_unit 4096
query_cache_size 1048576
query_cache_type OFF
query_cache_wlock_invalidate OFF

2 ● dilutionist
●200ポイント ベストアンサー

話としてはこのあたりに近い気がしたのですが、SQLAlchemyは使用していますか?

python - How to disable SQLAlchemy caching? - Stack Overflow


hogesukeさんのコメント
SQLAlchemyは使用していないのですが、mysql.connectorで同じような事象が発生していたようです。 fetchしたあとにcommitするようにコードを修正したところ問題が解決しました。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ