修改後未清除 ASP.NET 包記憶體
我有一個 ASP.NET MVC4 應用程序(我認為)自從一年前首次發布以來,它一直在與 JavaScript 和 CSS 捆綁一起正常工作。在此期間,我們發布了許多更新,並且沒有發現腳本傳遞存在問題的證據。
但是,在我們最新的程式碼部署中,我注意到提供的 JavaScript 不是最新的,並且腳本包請求中使用的 querystring 參數不會改變,無論底層腳本內容如何更改。
我嘗試在 Visual Studio 中重建解決方案,並驗證修改後的腳本文件是否已正確部署到伺服器。我也明確回收了 IIS 應用程序池並重新啟動了伺服器,但問題仍然存在。
請問有什麼方法可以診斷或解決這個問題嗎?
**更新:**剛剛比較了暫存伺服器和生產伺服器,我注意到行為有所不同。使用 Visual Studio Web 部署以相同的方式部署兩台伺服器。登台伺服器通過更新它在引用腳本包的 URL 中使用的雜湊值,正確並立即反映對腳本文件的更改。相反,生產伺服器無法更新其捆綁散列以響應腳本文件修改和/或腳本捆綁組合的更改(即使在重新啟動 IIS 或回收應用程序池之後)。這表明該問題與生產 IIS 環境無關,與我的程式碼更改或 Visual Studio 配置無關。
經過大量搜尋,我最終偶然發現了這個問題的原因。
伺服器未能檢測到對 JavaScript 文件新部署的更改是由伺服器上存在的這些 JavaScript 文件的一些類似名稱的縮小版本引起的。我認為這種行為是設計使然,即捆綁過程優先考慮現有的縮小文件並忽略等效的未縮小文件,即使它較新。
我不能確定這幾個縮小文件究竟是如何出現在伺服器上的,但我認為它們是涉及某種替代形式的縮小/捆綁的實驗的結果。無論如何,只需刪除它們,捆綁機制就可以看到我部署的腳本文件,一切都開始工作了。