Phoenix 提供的陈旧静态资产
Stale static assets served from Phoenix
我正在构建我的第一个微型 Phoenix 应用程序,运行 遇到了一个非常烦人的问题:
每次我对 JS 文件进行更改时,例如web/static/js/socket.js Brunch 正在获取更改并重新编译 priv/static/js/app.js。我已验证更改实际上已正确编译到 app.js。
但是,我无法让服务器将更新后的文件提供给客户端。
有什么想法可以使缓存失效正常工作吗?
会不会是 Cowboy 的配置问题?
注意:我是 运行 Vag运行t 框内的服务器 (Ubuntu) 和主机上的浏览器 (OSX)。
更新:这变成了一个谜!显然响应的内容来自缓存文件,但长度由磁盘上文件的长度决定。
示例:
echo "hey" > foo.js
(文件大小 4)
curl http://localhost:4000/js/foo.js
的响应是 hey\n
printf "." > foo.js
(文件大小 1)
响应:h
printf "1234567890" > foo.js
(文件大小 10)
响应(十六进制):6865 790a 0000 0000 0000
(响应是 hey\n
后跟空白填充)
事实证明这是 Virtual Box 的共享文件系统的一个已知问题。
切换到 NFS 解决了问题。
Cowboy 项目中对问题 812 的评论描述了我的确切问题:
https://github.com/ninenines/cowboy/issues/812
除此之外,如果您的 JS 文件的更改未被选中,则将 Brunch 配置为使用轮询可能会很有用。您可以通过将以下代码段添加到 brunch-config.js
.
来做到这一点
watcher: {
usePolling: true
},
我正在构建我的第一个微型 Phoenix 应用程序,运行 遇到了一个非常烦人的问题:
每次我对 JS 文件进行更改时,例如web/static/js/socket.js Brunch 正在获取更改并重新编译 priv/static/js/app.js。我已验证更改实际上已正确编译到 app.js。
但是,我无法让服务器将更新后的文件提供给客户端。 有什么想法可以使缓存失效正常工作吗? 会不会是 Cowboy 的配置问题?
注意:我是 运行 Vag运行t 框内的服务器 (Ubuntu) 和主机上的浏览器 (OSX)。
更新:这变成了一个谜!显然响应的内容来自缓存文件,但长度由磁盘上文件的长度决定。
示例:
echo "hey" > foo.js
(文件大小 4)
curl http://localhost:4000/js/foo.js
的响应是 hey\n
printf "." > foo.js
(文件大小 1)
响应:h
printf "1234567890" > foo.js
(文件大小 10)
响应(十六进制):6865 790a 0000 0000 0000
(响应是 hey\n
后跟空白填充)
事实证明这是 Virtual Box 的共享文件系统的一个已知问题。
切换到 NFS 解决了问题。
Cowboy 项目中对问题 812 的评论描述了我的确切问题: https://github.com/ninenines/cowboy/issues/812
除此之外,如果您的 JS 文件的更改未被选中,则将 Brunch 配置为使用轮询可能会很有用。您可以通过将以下代码段添加到 brunch-config.js
.
watcher: {
usePolling: true
},