作爲了解更多關於優化網站的測試,我一直試圖讓我的網站在PageSpeed Insights上獲得完美的分數。除了CSS交付之外,一切都很順利。如何以正確的方式加載css異步?
我確實設法通過使用預加載標籤來獲得完美結果,但由於某些原因,未針對Firefox加載。所以我嘗試使用其他解決方案。
然後我切換到這一點:
<link rel="stylesheet" href="~/css/site.min.css" media="none" onload="if(media !== 'all')media='all';">
<noscript><link rel="stylesheet" href="~/css/site.min.css"></noscript>
這似乎是非常有效的,但的PageSpeed不把它撿起來,因此只給了我85分的評價。
當我在頭部使用<link rel="stylesheet" href="~/css/site.min.css" media="none"/>
,在身體的末端使用<link rel="stylesheet" href="~/css/site.min.css">
時,也發生了同樣的情況。
然後我試圖加載我的JavaScript的CSS是這樣的:
<noscript id="deferred-styles">
<link rel="stylesheet" href="~/css/site.min.css"/>
</noscript>
<script>
var loadDeferredStyles = function() {
var addStylesNode = document.getElementById("deferred-styles");
var replacement = document.createElement("div");
replacement.innerHTML = addStylesNode.textContent;
document.body.appendChild(replacement);
addStylesNode.parentElement.removeChild(addStylesNode);
};
var raf = requestAnimationFrame ||
mozRequestAnimationFrame ||
webkitRequestAnimationFrame ||
msRequestAnimationFrame;
if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); });
else window.addEventListener('load', loadDeferredStyles);
</script>
但是,這也有同樣的效果! Pagespeed沒有拿起它,給了我一個糟糕的評價。爲什麼要這樣做?因爲上面的代碼可以在他們的網站上找到!
這似乎不適用於我。 Pagespeed仍然告訴我優化CSS遞送 – user2657943
奇怪。當我從我的頁面中刪除它時,Pagespeed會告訴我優化。當我再次添加代碼時,Pagespeed是一個快樂的兔子,我得分97. – Gerard
@Gerard我認爲這是發生的,因爲你的代碼在pagespeed測試完成後運行。當你刪除你的代碼時,你的css文件被立即調用。 –