Google WebマスターツールのPagespeedツールで、私が最近取り組んでいるアプリケーション(AngularJS)のスコアを向上させるための最適化をいくつか行いました。Pagespeedの最適化後に作業ができない
具体的には、Googleは「折り畳まれたコンテンツでレンダリングをブロックするJavaScriptとCSSを削除する」ことを求めていました。だから私は宣言を削除し、ページの読み込みが完了したときにロードするスクリプトにそれらを移動するので、私はから行ってきました。これに
<link rel="stylesheet" href="/bundles/vendor.css"/>
<link rel="stylesheet" href="/bundles/common.css"/>
<script src="/bundles/vendor.bundle.js"></script>
:body要素の下部に
<script type="text/javascript">
function downloadJSAtOnload() {
var stylesheet1 = document.createElement('link');
stylesheet1.href = "https://fonts.googleapis.com/css?family=Poppins";
stylesheet1.rel = 'stylesheet';
stylesheet1.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(stylesheet1);
var stylesheet2 = document.createElement('link');
stylesheet2.href = "/bundles/vendor.css";
stylesheet2.rel = 'stylesheet';
stylesheet2.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(stylesheet2);
var stylesheet3 = document.createElement('link');
stylesheet3.href = "/bundles/common.css";
stylesheet3.rel = 'stylesheet';
stylesheet3.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(stylesheet3);
var element1 = document.createElement("script");
element1.src = "/bundles/common.bundle.js";
document.body.appendChild(element1);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
。
私のスコアは大きく向上しましたが、配布に問題がありました。
我々はアセットファイルのキャッシュバスターのバージョンIDを生成するfilerevイサキタスクを呼び出し、その後、我々がuseminを呼び出して、我々はいつものuglify、縮小化などを行い、資産を構築するためのうなり声を使います元のアセットファイルの参照をバージョン番号に置き換え、キャッシュを破棄します。
src要素のuseminだけが動作し、これらのアセットをロードする方法があるため、元のアセット名への参照が保持されるという問題があります。これは、リリース中にビルド後に手作業で変更する必要があることを意味しますが、これは受け入れられません。
だから私はそれを動作させる方法や代替する方法を探していますが、これまでのところ運がありません。
私はあなたに同感ですが、クライアントはスコアを改善したいと考えています。私は延期を試み、それはjsファイルのためにうまくいくが、それはCSSのために働かない。 – jeudyx