服务器正在提供旧版本的静态文件,但修剪或填充以匹配新版本的长度

Cam*_*son 12 caching werkzeug flask gunicorn

我的问题的症状几乎完全匹配这个问题:更改的静态文件被裁剪/填充到新的大小并提供旧的 - Fedora

每当我更改静态文件(例如.js和.css)时,这些更改都不会显示在服务文件中.但是,如果我的更改导致文件更改长度,则服务文件确实与新长度匹配:

  • 如果我从静态文件中的任何位置删除字符,那么最后会通过那么多字符修剪服务文件.
  • 如果我将字符添加到静态文件中的任何位置,那么服务文件将在末尾填充许多 (即U + FFFD)字符.

链接答案无法解决我的问题的原因是我没有使用Apache.我正在为Heroku编写一个Python Web应用程序,所以我使用的是gunicorn和Flask(因此也是Werkzeug).链接的答案说,在Apache中禁用sendfile解决了这个问题,所以我尝试将'USE_X_SENDFILE'变量设置为False,如此页面,但它没有帮助.我还将'SEND_FILE_MAX_AGE_DEFAULT'设置为1以进一步尝试防止某种缓存发生,这也没有帮助.

如果不是很明显,我真的不太了解配置Web服务器,所以在用完相关的Google点击后,我不知道是什么原因造成的.救命?

Alp*_*Alp 4

Virtualbox 讨厌 sendfile。如果你把它关掉它应该可以工作。

例如,在 nginx 中,您需要添加sendfile: off;. 在 Apache 中,它只是EnableSendfile off.