我必須在本地預編譯資產以使我的一個JS插件正常工作。Rails 4應用程序在Elastic Beanstalk上的預編譯資產與Puma和Nginx服務頁面與舊資產鏈接
每當我對任何資產和預編譯進行更改時,我都會在公共/資產中獲得新版本,而舊版本也在那裏。當我在生產模式下本地運行時,我會爲新資產提供一個頁面。
當我部署到EB時,頁面始終包含指向舊資產的鏈接。
當然,application.html.erb使用動態CSS鏈接標籤:<%= stylesheet_link_tag "application", media: "all" %>
production.rb包含:
config.action_controller.perform_caching = true
config.assets.compile = true
我想,這一定有什麼做的Nginx或某種緩存在EC2上的HTML文件,因爲美洲獅在本地運行。
我曾嘗試:
- 不同的瀏覽器,PC,清除緩存,禁用緩存。它不是瀏覽器。
- 在nginx.conf中設置關閉發送文件。
- 將緩存過期設置爲-1,並通過我收到的curl確認緩存控制:no-cache
- 將整個應用/當前文件夾重命名。我仍然收到一個頁面,但它缺少CSS。服務器啓動後實際使用的文件在哪裏?
rake tmp:clear
在服務器上。- 在整個服務器上尋找任何nginx或puma緩存。我什麼也沒找到。
- 在過去的兩年裏對小時進行研究。
有史以來唯一可行的是rake assets:clobber
,創建一個新的EB環境,並部署幾次。有時候,即使這樣也行不通。
請幫忙!
感謝您的建議。我改變了版本,資產全部重新編譯,並沒有幫助。它似乎是與正在服務的實際HTML有關。它仍然試圖鏈接到舊版本。 – user1732748
您的html仍然指向(嘗試提供)具有舊指紋的資產,並且據我瞭解,更改資產版本應該強制應用程序生成指向具有新指紋的資產的html。唯一讓我想到的是嘗試重新啓動服務器,但如果它已經在部署期間完成比我不知道什麼可能是一個問題:( –