如何解决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 相关文章推荐
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
Python Flask基础教程示例代码
Feb 07 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
如何用python 操作zookeeper
Dec 28 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
基于Python实现天天酷跑功能
Jan 06 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 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
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
yii框架源码分析之创建controller代码
2011/06/28 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
PHP 错误处理机制
2015/07/06 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
分析在Python中何种情况下需要使用断言
2015/04/01 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
c++工程师面试问题
2013/08/04 面试题
2014年开学第一课活动方案
2014/03/06 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
高老头读书笔记
2015/06/30 职场文书
创业计划书之寿司
2019/07/19 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Windows7下FTP搭建图文教程
2022/08/05 Servers
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android