我正在构建一个包含实时数据的小型 Web 应用程序。数据由 Erlang 使用 Cowboy 提供。为简单起见,我希望 Cowboy 也为网页提供静态文件。但似乎 Cowboy 无法识别磁盘上的文件是否已更改,继续为旧版本提供服务。
我尝试禁用 etags 并清除浏览器的缓存,但没有成功。到目前为止,只有重新启动整个 Erlang 应用程序才能工作,这非常乏味(至少在开发过程中)。有什么方法可以禁用 Cowboy 的缓存机制或让它知道文件更改吗?
牛仔设置代码:
start(_StartType, _StartArgs) ->
% setup cowboy
Dispatch = cowboy_router:compile([{'_',
[{"/", cowboy_static, {priv_file, app_name, "static/index.html"}},
{"/[...]", cowboy_static, {priv_dir, app_name, "static"}}]}]),
{ok, _} = cowboy:start_http(http_listener, 5, [{port, 12345}], [{env, [{dispatch, Dispatch}]}]),
sup:start_link().
附带说明一下,具有讽刺意味的是,Cowboy 会根据文件的修改时间和大小仔细生成 etag,但是当请求更改的文件时,它只会回复旧的 etag 而不是检查更改。
最好的问候,克隆乔