凤凰城提供陈旧的静态资产

时间:2016-06-10 09:56:22

标签: phoenix-framework cowboy

我正在构建我的第一个小凤凰应用程序并遇到了一个非常讨厌的问题:

每次我对JS文件进行更改,例如web / static / js / socket.js Brunch正在接受更改并重新编译priv / static / js / app.js。我已经验证这些更改实际上已正确编译到app.js中。

但是,我无法使服务器向客户端提供更新的文件。 任何想法如何使缓存失效正常工作? 可能是Cowboy的配置问题吗?

注意:我在Vagrant框(Ubuntu)和主机(OSX)上的浏览器中运行服务器。

更新:这变成了一个谜!显然,响应的内容来自缓存文件,但长度取决于磁盘上文件的长度。

示例:
echo "hey" > foo.js
(Filesize 4)
curl http://localhost:4000/js/foo.js的回复是hey\n

printf "." > foo.js
(Filesize 1)
回复:h

printf "1234567890" > foo.js
(Filesize 10)
响应(十六进制):6865 790a 0000 0000 0000(响应为hey\n后跟空白填充)

1 个答案:

答案 0 :(得分:1)

原来是Virtual Box的一个已知问题'共享文件系统。
切换到NFS解决了这个问题。

牛仔项目中关于问题812的评论描述了我的确切问题: https://github.com/ninenines/cowboy/issues/812

除此之外,如果对JS文件的更改未进行检查,则将Brunch配置为使用轮询可能很有用。您可以将以下代码段添加到brunch-config.js

watcher: {
  usePolling: true
},