如何解决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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python实现子类调用父类的方法
Nov 10 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
python找出完数的方法
Nov 12 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
python安装gdal的两种方法
Oct 29 Python
Python创建数字列表的示例
Nov 28 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python的collections模块真的很好用
Mar 01 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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实际应用经验篇(1)
2006/10/09 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
删除重复数据的算法
2006/11/23 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
js变量提升深入理解
2016/09/16 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
Python 解析XML文件
2009/04/15 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python关于反射的实例代码分享
2020/02/20 Python
python super()函数的基本使用
2020/09/10 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
公司踏青活动方案
2014/08/16 职场文书
个人总结怎么写
2015/02/26 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
中学团支部工作总结
2015/08/13 职场文书
2016年寒假生活小结
2015/10/10 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
jquery插件实现搜索历史
2021/04/24 jQuery