如何解决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读取环境变量的方法和自定义类分享
Nov 22 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
Python切片索引用法示例
May 15 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
浅谈django orm 优化
Aug 18 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python中的colorlog库使用详解
Jul 05 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 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
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
Prototype String对象 学习
2009/07/19 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
2010/09/15 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
详解python单元测试框架unittest
2018/07/02 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
简单说说tomcat的配置
2013/05/28 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
质检员的岗位职责
2013/11/15 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
大学生军训感言
2015/08/01 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android