如何解决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 生成目录树及显示文件大小的代码
Jul 23 Python
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
python 代码运行时间获取方式详解
Sep 18 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
Django migrate报错的解决方案
May 20 Python
Python基础教程,Python入门教程(超详细)
Jun 24 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
玩转虚拟域名◎+ .
2006/10/09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
js删除数组中某几项的方法总结
2019/01/16 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python算法学习之基数排序实例
2013/12/18 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
几个常见的消息中间件(MOM)
2014/01/08 面试题
学校学雷锋活动总结
2014/06/26 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
最感人的道歉情书
2015/05/12 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android