如何解决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 18 Python
python进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
Python正则表达式经典入门教程
May 22 Python
不可错过的十本Python好书
Jul 06 Python
python中abs&amp;map&amp;reduce简介
Feb 20 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 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 模拟$_PUT实现代码
2010/03/15 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
js实现旋转木马效果
2017/03/17 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python实现简单的HttpServer服务器示例
2017/09/25 Python
python 中的int()函数怎么用
2017/10/17 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
pandas去除重复列的实现方法
2019/01/29 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
初中家长寄语
2014/04/02 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
python实现高效的遗传算法
2021/04/07 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
centos7安装mysql5.7经验记录
2022/05/02 Servers