Noa*_*ltz 7 deployment heroku purge browser-cache flask
我的 Flask 应用程序由 Heroku 托管并在 Nginx 上提供服务,并使用 Cloudflare 作为 CDN。有时我会更改后端的静态资产(图像、CSS、JS 等),这些资产通过在 Heroku 上的部署而改变。这些更改不会在客户端浏览器上更改,除非他们手动清除缓存。缓存确实按照建议每个月在客户端浏览器上过期,但我希望后端每次我部署到 Heroku 时都手动告诉客户端浏览器清除我网站的缓存,并且他们在事后加载/重新加载我的网站。有没有办法自动化这个过程?
小智 3
如果您使用相同的文件名,它将使用缓存副本,那么为什么不使用过滤器对静态文件提供版本控制呢?您根本不必更改文件名。尽管请阅读所提供链接中的警告。
\nimport os\nfrom some_app import app\n\n\n@app.template_filter(\'autoversion\')\ndef autoversion_filter(filename):\n # determining fullpath might be project specific\n fullpath = os.path.join(\'some_app/\', filename[1:])\n try:\n timestamp = str(os.path.getmtime(fullpath))\n except OSError:\n return filename\n newfilename = "{0}?v={1}".format(filename, timestamp)\n return newfilename\n
Run Code Online (Sandbox Code Playgroud)\n通过https://ana-balica.github.io/2014/02/01/autoversioning-static-assets-in-flask/
\n\n\n\xe2\x80\x9cDon\xe2\x80\x99t 在静态资源的 URL 中包含查询字符串。\xe2\x80\x9d\n它表示大多数代理不会缓存带有查询参数的静态文件。因此,这将增加带宽,因为每个请求都会下载所有资源。
\n\xe2\x80\x9c要为这些资源启用代理缓存,请从对静态资源的引用中删除\n查询字符串,并将参数\n编码为文件名本身。\xe2\x80\x9d 但这意味着略有不同\n实现: )
\n
归档时间: |
|
查看次数: |
259 次 |
最近记录: |