在緩存文件和內聯文件之間有一個權衡。與每次下載內聯腳本標記相比,緩存的大文件在後續對同一頁面的請求中加載速度更快。
Html 5支持腳本文件的異步請求,所以如果您有有意義的內容顯示不依賴於腳本,您可以在標籤上指定async
。
Google is using some module for Apache and Nginx並演示它們如何以編程方式內聯它們。
否則這裏是一個小未經測試的一段代碼,完成你想要的...
var bundleURL = Scripts.Url("~/bundles/jquery");
var fullUrl = (Request.Url.GetLeftPart(UriPartial.Authority) + bundleURL.ToString());
var client = new WebClient();
var minJS = client.DownloadString(fullUrl);
ViewBag.Javascript = minJS;
<script type="text/javascript">
@ViewBag.Javascript
</script>
呀,儘量減少請求的目標導致了另一個請求。由於綁定在MVC中的工作方式,這是一種失敗的原因。該包是一個虛擬文件,並且在請求它之前不存在。所以你必須嘲笑那種行爲才能找回合適的東西。可能更好的方式(儘管更單調)將獨立地縮小,然後打開並讀取文件而不是提出請求。
多個請求可以並行運行。我知道,你會說:「這一切都通過相同的線(除非JS代碼在不同的服務器上)」,但瀏覽器可能正忙着渲染下載的HTML,同時它仍在下載JS,所以你省了一點的時間,並獲得更好的響應。 – Floremin 2014-12-04 14:56:17