如何解决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统计文件行数示例分享
Feb 21 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
安装Python的教程-Windows
Jul 22 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
详解Python是如何实现issubclass的
Jul 24 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Python集合set()使用的方法详解
Mar 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编写大型网站问题集
2007/03/06 PHP
ini_set的用法介绍
2014/01/07 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
Python API len函数操作过程解析
2020/03/05 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
学校十一活动方案
2014/02/01 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
我的中国梦主题班会
2015/08/14 职场文书
大学副班长竞选稿
2015/11/21 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL