如何解决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实现dict版图遍历示例
Feb 19 Python
python with statement 进行文件操作指南
Aug 22 Python
python函数装饰器用法实例详解
Jun 04 Python
tensorflow识别自己手写数字
Mar 14 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python-jenkins 获取job构建信息方式
May 12 Python
Python使用configparser读取ini配置文件
May 25 Python
python判断元素是否存在的实例方法
Sep 24 Python
使用Python解决图表与画布的间距问题
Apr 11 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
php简单smarty入门程序实例
2015/06/11 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
Javascript事件实例详解
2013/11/06 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
详解python中__name__的意义以及作用
2019/08/07 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
详解Python3中的 input() 函数
2020/03/18 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
婴儿地球:Baby Earth
2018/12/25 全球购物
应用数学自荐书范文
2013/11/24 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
关于安全的演讲稿
2014/05/09 职场文书
团队精神口号
2014/06/06 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
后备干部推荐材料
2014/12/24 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
python和anaconda的区别
2022/05/06 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers