这里有一些关于图像的 Flask 问题,但没有一个能解决我的问题。我有一个应用程序可以创建图像,保存它,然后显示它。一次。它应该多次执行此操作(每次更改图像时,它应该加载新图像)。它不是;它只显示与其显示的文件名关联的第一个图像。这些文件不再位于静态文件夹中,但显示在应用程序中。
创建图像,并通过以下方式保存到静态文件夹的子文件夹中:
img.save('../source/static/images/characters/{}.png'
.format(self.char.name), "PNG")
该应用程序通过以下方式加载它:
'<img src="/static/images/characters/{}.png" '
.format(self.name) +
' alt="{}" title="{}" '.format(self.name, self.name) +
'width=100% />'
(通过代码操作添加到 Flask 应用程序中)。
问题是我有两个测试用例:一个是文本出现在图像上(添加的文本在代码的几次迭代前被删除),另一个是 alpha 通道位于错误的位置(RGBA -> ARGB 问题已解决,除了我在网站上看不到新文件)。截至目前,仅在本地运行/测试。正确的图片出现在~\source\static\images\characters
。所有 *.py 文件均位于源代码中。我需要做什么才能解决这个问题?
我试过了:
@app.after_request
def add_header(response):
"""
Add headers to both force latest IE rendering engine or Chrome Frame,
and also to cache the rendered page for 10 minutes.
"""
response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1'
response.headers['Cache-Control'] = 'public, max-age=0'
return response
作为我的末尾的一段单独的代码app.py
文件,还尝试添加:
app.config["CACHE_TYPE"] = "null"
至年初app.route()
调用创建图像的页面。
在一个可能的单独注释中,图像应该在表格中,但似乎不是......我的意思是,有一个带标题的表格,然后一个表格在一个列中,图像在另一列中......但是第一列的文本位于图像下方(尽管每个文本都在适当的位置)。很奇怪,但可能无关。
那么,为什么 Flask 无法正确更新,我该如何强制它这样做呢? (关闭程序并重新打开时问题仍然存在)。
UPDATE:
This seemed上班...
使用 Flask,如何修改所有输出的 Cache-Control 标头? https://stackoverflow.com/questions/23112316/using-flask-how-do-i-modify-the-cache-control-header-for-all-output
通过添加:
app = Flask(__name__)
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 1
到顶部(包括 app = Flask 部分以帮助其他新手),最后是:
# No caching at all for API endpoints.
@app.after_request
def add_header(response):
# response.cache_control.no_store = True
if 'Cache-Control' not in response.headers:
response.headers['Cache-Control'] = 'no-store'
return response
但只适用于单个实例,其他人仍然有奇怪的缓存。可以从之前缓存,而另一个刚刚超时,但这种情况不应该发生,因为我一直关闭服务器(本地主机),对吗?