2016-06-10 139 views
0

我建立我的第一個微小的鳳凰應用投放,撞上了超級討厭的問題:陳舊的靜態資產從鳳凰

每當我做出改變JS文件如web/static/js/socket.js Brunch正在接受更改並重新編譯priv/static/js/app.js。我已經驗證了這些更改實際上已正確編譯到app.js中。

但是,我無法讓服務器向客戶端提供更新的文件。 任何想法,我可以使緩存失效正常工作? 這可能是牛仔配置問題嗎?

注意:我在Vagrant框(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後跟空白填充)

+0

這是整頁刷新?當你在瀏覽器中重新加載頁面時,你會得到舊的'app.js'嗎?這是在dev還是prod? – Dogbert

+0

是的,在整頁上重新加載。我正在使用cURL來確保它與瀏覽器緩存無關。它在開發中。我嘗試將一個新文件(foo.js)放入priv/static/js中,並且具有相同的問題。服務器將選取新文件,但即使在文件發生更改後,服務器也會繼續提供原始內容。 – jonasmaturana

回答

1

原來是Virtual Box的共享文件系統的一個已知問題。
切換到NFS解決了這個問題。

在牛仔上項目812問題的註釋說明我確切的問題: https://github.com/ninenines/cowboy/issues/812

此外,它可能是早午餐配置爲使用輪詢如果更改您的JS文件不被糾察起來非常有用。您可以通過將以下代碼段添加到brunch-config.js來完成此操作。

watcher: { 
    usePolling: true 
},