如何解决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批量修改文件后缀示例代码分享
Dec 24 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
python opencv实现证件照换底功能
Aug 19 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
javascript闭包的理解
2015/04/01 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
python小白学习包管理器pip安装
2020/06/09 Python
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
心理健康活动总结
2014/04/30 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
九九重阳节标语
2014/10/07 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书