摘要
博主在使用flask進行web開發時,需要將圖片上傳並展示,對於上傳的圖片都進行重命名並保存在static文件夾下,然而發現多次上傳后展示的圖片還是原來的圖片,盡管后端顯示圖片已更新成最新上傳的圖片,前端還是展示原來的圖片,本篇將提供解決方法。
解決辦法
博主在網絡上找到兩類解決辦法,其中一類是修改靜態文件的緩存時間為1秒,然而親測無效。
# 設置靜態文件緩存過期時間
app.send_file_max_age_default = timedelta(seconds=1)
另一類是通過重寫url_for的方法,注意前端也要通過url_for訪問靜態資源,親測有效。
# url_for,修改靜態文件(js,css,image)時,網頁同步修改
@app.context_processor
def override_url_for():
return dict(url_for=dated_url_for)
def dated_url_for(endpoint, **values):
filename = None
if endpoint == 'static':
filename = values.get('filename', None)
if filename:
file_path = os.path.join(app.root_path, endpoint, filename)
values['v'] = int(os.stat(file_path).st_mtime)
return url_for(endpoint, **values)
以上。