flask修改靜態文件后緩存文件不能及時更新的解決辦法


摘要

  博主在使用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)

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM