如何解决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让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
基于python中的TCP及UDP(详解)
Nov 06 Python
python交互式图形编程实例(一)
Nov 17 Python
python3如何将docx转换成pdf文件
Mar 23 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
Tesserocr库的正确安装方式
Oct 19 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
python实发邮件实例详解
Nov 11 Python
OpenCV图片漫画效果的实现示例
Aug 18 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异常处理技术,顶级异常处理器
2012/06/13 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
PHP7 新增功能
2021/03/09 PHP
自己的js工具 Event封装
2009/08/21 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
JS实现随机点名器
2020/04/12 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
工程售后服务承诺书
2014/05/21 职场文书
服务理念口号
2014/06/11 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
绵山导游词
2015/02/05 职场文书
地震捐款简报
2015/07/21 职场文书
养成教育主题班会
2015/08/13 职场文书