如何解决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 29 Python
python 实现插入排序算法
Jun 05 Python
Python下的twisted框架入门指引
Apr 15 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
python读取目录下最新的文件夹方法
Dec 24 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Python正则表达式学习小例子
Mar 03 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
Python实现列表拼接和去重的三种方式
Jul 02 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
jquery.validate使用详解
2016/06/02 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python Web编程之WSGI协议简介
2018/07/18 Python
详解python Todo清单实战
2018/11/01 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
利用python 下载bilibili视频
2020/11/13 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
八年级英语教学计划
2015/01/23 职场文书
导游词之西安骊山
2019/12/20 职场文书