2016-08-15 28 views
0

從我可以確定用於編譯的node-sass-middleware.scss Express中的文件在每次提供請求時都會從我的.scss文件重新編譯.css文件。如何使node-sass-middleware不會每次都重新編譯,即使沒有更改?

這對於生產環境來說並不理想,我更希望只有在自上次編譯後更改了文件時才重新編譯這些文件。我認爲通過以某種方式嗅探目標文件夾/文件是可能的,但我想知道是否有一種直接的方式來實現這一點,我不知道。可能是node-sass的標誌或者我錯過的東西,儘管我在文檔中找不到任何東西。

它可能並非實際上每次重新編譯開始,但我不知道如何測試。

希望有人能幫助!謝謝!

回答

0

因此,在提交我的問題後,我很快就發現我可以檢查文件的last modified元數據以確定文件是否已被重新編譯。哎呦。

我做了一個試驗:

  1. 推出的應用程序,並請求一個頁面,以便.css文件編譯首次
  2. 做了說明的.css文件的last modified時間
  3. 要求的頁面再次
  4. 比較當前last modified時間到前一個,發現沒有變化
  5. 做了變化t ○.scss文件
  6. 再次比較了last modified時,發現它已經改變,除了樣式更改頁面上的反射

因此,我得出的結論是node-sass-middleware莫名其妙地檢測到沒有任何改變並且不會不必要地重新編譯Sass,這非常值得了解。我想這與其在緩存中緩存CSS文件的能力相結合,這是一個非常有效的解決方案。

注意:我已經做了一些進一步的測試,發現重新啓動應用程序將導致重新編譯Sass,即使沒有更改.scss文件並且現有的.css文件完全有效。這表明它只比嗅探文件夾/文件內容稍微多一些。

+0

另一個觀察:無論如何,它似乎在一段時間後重新編譯(其中我不確定,但至少五分鐘)。這與'maxAge'選項沒有任何關係,因爲即使我把它設置爲幾秒鐘,一分鐘左右也不會重新編譯。 –

相關問題