【问题标题】:Revel framework caching static files?Revel 框架缓存静态文件?
【发布时间】:2023-07-07 23:25:01
【问题描述】:

我正在尝试在 revel go web 框架上构建一个简单的 web 应用程序。 出于某种原因,当我在浏览器中打开它们的 URL 时,公共目录中的文件没有正确加载。例如,文件的旧版本可能会出现(即使在浏览器中重新加载后),或者会出现截断的版本。

有人遇到过这个问题吗?

【问题讨论】:

  • 尝试curl -I http://url/to/file.jpg 看看是否设置了Cache-ControlExpires 标头(或查看源代码)。
  • 我试过了,我得到以下输出:HTTP/1.1 200 OK Accept-Ranges: bytes Content-Disposition: inline; filename=droparea.css Content-Length: 645 Content-Type: text/css; charset=utf-8 Date: Mon, 05 Aug 2013 23:03:46 GMT Last-Modified: Mon, 05 Aug 2013 23:02:51 GMT Set-Cookie: REVEL_FLASH=; Path=/ Set-Cookie: REVEL_SESSION=56490577f9ae482388651378bc5c746a230c35fe-%00_TS%3A1378335826%00; Path=/; Expires=Wed, 04 Sep 2013 23:03:46 UTC
  • 此外,curl 检索文件的旧版本。重新开始狂欢似乎没有什么不同。
  • 那里有一个Expires 标头。您不在我的时区(所以我无法确定它是否在您的“未来”中)但是如果 Expires 提供的日期大于时间,您的浏览器将缓存文件并且直到那个时候才检查超过,因为不需要重新验证。作为临时措施,您始终可以在浏览器中强制重新加载 (Ctrl/Cmd+R),或者对 CSS 进行版本控制:droparea.css?v={{ time.Now().UTC() }}
  • 有趣的是,过期日期已经过去了。我也尝试更改代码,即使我在开发模式下运行,热重载似乎也不起作用..这里有些可疑

标签: web go revel


【解决方案1】:
  • GOPATH 是否设置在您正在开发的同一位置?
  • 您的 gopath 中有更多该文件的副本吗?
  • 能否尝试运行 strace -e open revel run my/app/name | grep file.jpg 并查看 revel 使用的位置是什么?

我遇到了类似的问题,因为我在 gopath 之外开发...

【讨论】: