如何解决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之一个免费的实验室
Sep 14 Python
Python中的推导式使用详解
Jun 03 Python
python实现猜数字小游戏
Mar 24 Python
python实现简易内存监控
Jun 21 Python
python ubplot使用方法解析
Jan 10 Python
Pycharm修改python路径过程图解
May 22 Python
在keras里实现自定义上采样层
Jun 28 Python
Python开发入门——迭代的基本使用
Sep 03 Python
Python实现中英文全文搜索的示例
Dec 04 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 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之第七天
2006/10/09 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
javascript getElementsByClassName实现代码
2010/10/11 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python unichr函数知识点总结
2020/12/16 Python
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
营销经理工作检讨书
2014/11/03 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
《海上日出》教学反思
2016/02/23 职场文书