2016-12-21 11 views
-1

私の関数はMatplotlibを呼び出して、ユーザの入力からの日付に基づいてFigureを作成して保存します。Matplotlib:画像が新しい図形でリフレッシュされない

私はこのような私の静的なフォルダに新しい姿を保存します。

plt.savefig('insights/static/chart.png') 
return render_template("chart.html") 

マイテンプレートは、このような数字を呼び出します。

<img src="/static/chart.png"> 

ユーザーが新しい日付を入力するとmatplotlibのは、その新しいフィギュアを作成し、静的に存在するFigureファイルを上書きします。サーバー上の図は更新されますが、テンプレートに表示される画像は更新されません。新しい図を更新するには、テンプレートを保存する必要があります。

私はキャッシュに問題があると思います...誰かが回避策を提案できますか?

+0

イメージ名に日付と時刻を使用し、この名前をテンプレートに送信します。または、少なくとも 'src ="/static/chart.png?var = some_random_value "'を試してください。ブラウザはこの名前を新しいファイルとして扱います。 – furas

+1

フレームワークのコンテキストが欠けていませんか?テンプレート、キャッシング、静的フォルダ...背景は何ですか? –

+0

サーバは 'src ="/static/chart.png?var = some_random_value "'を 'src ="/static/chart.png "として扱います(何も変えません)。キャッシュにはないので、もう一度ダウンロードする必要があります。 – furas

答えて

0

私は、ブラウザに画像やページ全体の内容を更新させるための多くのソリューションがあると思います。

Is there a way to force browsers to refresh/download images?

Refresh image with a new one at the same url

What is the best way to force an image refresh on a webpage?

How to force a web browser NOT to cache images

PHP force refresh image

一部ではJavaScriptを使用しますが、他にはありません。二つの主要な概念は以下のとおりです。

  1. たびに別のファイル名を使用するか、またはGET変数(?var=...)を使用
  2. キャッシュを防ぐために、HTMLのMetaタグを設定します。
+0

ありがとうございました。私はあなたが言及したいくつかの例を使ってそれを行う方法を考え出しました。私はタイムスタンプ: – aviss

+0

'timestr = time.strftime("%Y%m%d-%H%M%S ") plt.savefig( 'insights/static/charts /' + timestr + ')を使って自分のファイルに名前を付けることにしました。 png ') return render_template( "chart.html"、timestr = timestr) ' – aviss

関連する問題