[ASP.NET]@Scripts.Render bundles 的檔案,QueryString的參數除了 v 之外,居然還有 "_" ?

最近在查一個效能問題,發現一個頁面居然下載了相同的 jquery, kendoui 的 js。

到底是什麼問題呢?

從上圖可以發現,jquery?v= 的值跟下方的值都一樣,

只是下方的那些 bundles 在 QueryString 中都增加了一個 "_" 的參數,

_=1478672331181 ...

但因為多了那些參數,導致那些 css, js 都重新再 download 一次,不會 cache (每次 _ 的值都不同)。

詢問別的同事都沒有這樣子的狀況。 只好再追下去 ...
 

後來查到原來是因為某個View中有使用Tab,而那個Tab中又將另個View給包進去,

而那些View使用相同的 Layout , Layout 中都有用 @Scripts.Render 將 Bundles 的 js Render 出來。

簡單來說就是在View中重覆執行相同的 @Scripts.Render Bundles 所造成的。如下,

請同事調整不要重覆 Render Bundles 的內容就可以了。

所以如果 Bundles 的參數有多 "_" 的話,要注意一下哦!

另外,如果 kendo ui 的 js 太大的話,它們有提供客製下載個別的 ui js 檔哦!

參考資料

Bundling and Minification

Kendo UI Custom Download

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^