如何解决flask修改静态资源后缓存文件不能及时更改问题


Posted in Python onAugust 02, 2020

run.py

from flask import url_for

@app.context_processor # 上下文渲染器,给所有html添加渲染参数
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) # 取文件最后修改时间的时间戳,文件不更新,则可用缓存
    return url_for(endpoint, **values)

html文件

<link rel="stylesheet" href="{{ url_for('static', filename='css/base.css') }}" rel="external nofollow" >

这里重写了url_for方法,在后面加了?v=xxx,这里的xxx是该文件最后修改时间的时间戳。修改文件后,参数v发生变化,浏览器去服务端请求新的静态资源文件。

内容扩展:

flask踩过的坑

希望大家把遇到的问题都分享下,减少走弯路。

1.router不能统一管理,我采用Django模式把所有的路由都配置在urls文件中

2.router不能统一加载,没有找到像spring包扫描类似的工具类

3.TemplateNotFound静态资源找不到

4.debug模式 静态资源修改不生效,需要重启服务器

if name == ‘main‘:
#静态资源修改不需要重启
app.jinja_env.auto_reload = True
app.run(debug=True)

5.Template 引用静态资源 url_for

以上就是如何解决flask修改静态资源后缓存文件不能及时更改问题的详细内容,更多关于flask修改静态资源后缓存文件不能及时更改的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python的Django框架中的数据库配置指南
Jul 17 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
Python Django基础二之URL路由系统
Jul 18 Python
简单了解django orm中介模型
Jul 30 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
flask 实现token机制的示例代码
Nov 07 Python
Python实现拼音转换
Jun 07 Python
浅析Python中的随机采样和概率分布
Dec 06 Python
Flask缓存静态文件的具体方法
Aug 02 #Python
Flask中sqlalchemy模块的实例用法
Aug 02 #Python
python线程里哪种模块比较适合
Aug 02 #Python
python缩进长度是否统一
Aug 02 #Python
Python接收手机短信的代码整理
Aug 02 #Python
Python改变对象的字符串显示的方法
Aug 01 #Python
Python 如何定义匿名或内联函数
Aug 01 #Python
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
python中abs&amp;map&amp;reduce简介
2018/02/20 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
一个入门级python爬虫教程详解
2021/01/27 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
见习期自我鉴定
2013/11/07 职场文书
企业法人代表证明书
2014/09/27 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
2014年司机工作总结
2014/11/21 职场文书
2014年管理工作总结
2014/11/22 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
中秋节祝酒词
2015/08/12 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
导游词之五台山
2019/10/11 职场文书
导游词之河北野三坡
2019/12/11 职场文书