如何解决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 pass 语句使用示例
Mar 11 Python
Python中functools模块函数解析
Mar 12 Python
Python 正则表达式实现计算器功能
Apr 29 Python
python中的二维列表实例详解
Jun 19 Python
Python 判断奇数偶数的方法
Dec 20 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
Python日志处理模块logging用法解析
May 19 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
python音频处理的示例详解
Dec 23 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 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下使用以下代码连接并测试
2008/04/09 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP数组实例总结与说明
2011/08/23 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
初识laravel5
2015/03/02 PHP
PHP概率计算函数汇总
2015/09/13 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
深入分析python 排序
2020/08/24 Python
营销与策划个人求职信
2013/09/22 职场文书
大学生毕业求职简历的自我评价
2013/10/24 职场文书
办公室年终个人自我评价
2013/10/28 职场文书
办理信用卡工作证明
2014/01/11 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
客户答谢会致辞
2015/07/30 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
python3操作redis实现List列表实例
2021/08/04 Python