如何解決flask修改靜態(tài)資源后緩存文件不能及時(shí)更改問(wèn)題
run.py
from flask import url_for @app.context_processor # 上下文渲染器,給所有html添加渲染參數(shù) def inject_url(): data = { "url_for": dated_url_for, } return data 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) # 取文件最后修改時(shí)間的時(shí)間戳,文件不更新,則可用緩存 return url_for(endpoint, **values)
html文件
<link rel="stylesheet" href="{{ url_for('static', filename='css/base.css') }}" rel="external nofollow" >
這里重寫(xiě)了url_for方法,在后面加了?v=xxx,這里的xxx是該文件最后修改時(shí)間的時(shí)間戳。修改文件后,參數(shù)v發(fā)生變化,瀏覽器去服務(wù)端請(qǐng)求新的靜態(tài)資源文件。
內(nèi)容擴(kuò)展:
flask踩過(guò)的坑
希望大家把遇到的問(wèn)題都分享下,減少走彎路。
1.router不能統(tǒng)一管理,我采用Django模式把所有的路由都配置在urls文件中
2.router不能統(tǒng)一加載,沒(méi)有找到像spring包掃描類似的工具類
3.TemplateNotFound靜態(tài)資源找不到
4.debug模式 靜態(tài)資源修改不生效,需要重啟服務(wù)器
if name == ‘main‘: #靜態(tài)資源修改不需要重啟 app.jinja_env.auto_reload = True app.run(debug=True)
5.Template 引用靜態(tài)資源 url_for
以上就是如何解決flask修改靜態(tài)資源后緩存文件不能及時(shí)更改問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于flask修改靜態(tài)資源后緩存文件不能及時(shí)更改的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Flask框架學(xué)習(xí)筆記之消息提示與異常處理操作詳解
- flask中主動(dòng)拋出異常及統(tǒng)一異常處理代碼示例
- 利用python實(shí)現(xiàn)后端寫(xiě)網(wǎng)頁(yè)(flask框架)
- 如何創(chuàng)建一個(gè)Flask項(xiàng)目并進(jìn)行簡(jiǎn)單配置
- flask開(kāi)啟多線程的具體方法
- 詳解Flask前后端分離項(xiàng)目案例
- 基于python和flask實(shí)現(xiàn)http接口過(guò)程解析
- Python Flask微信小程序登錄流程及登錄api實(shí)現(xiàn)代碼
- Python flask框架實(shí)現(xiàn)查詢數(shù)據(jù)庫(kù)并顯示數(shù)據(jù)
- 詳解Flask開(kāi)發(fā)技巧之異常處理

django 實(shí)現(xiàn)將本地圖片存入數(shù)據(jù)庫(kù),并能顯示在web上的示例

python 找出list中最大或者最小幾個(gè)數(shù)的索引方法

Python的Bottle框架中返回靜態(tài)文件和JSON對(duì)象的方法

淺談python中scipy.misc.logsumexp函數(shù)的運(yùn)用場(chǎng)景

使用PyOpenGL繪制三維坐標(biāo)系實(shí)例

selenium+python自動(dòng)化測(cè)試之多窗口切換