2011-02-01 8 views
4

私はYSlowが好きです。ルールに従うときは常識を使いましょう。しかし、楽しいために私は100点に私のASP.NET MVCサイトを取得しようとしています。そして、私はほぼそこにいます(現時点では99で、別のサーバーに私のサイトをミラーリングし、about:configを変更してCDN )。YSlowルール8(JavaScriptとCSS外部を作成)と有効なhtml5

テストの結果、ルール8(2つのインラインスクリプトで1ポイントを差し引いたところ)で完璧なスコアを取得するには、HTML5の構文ルール(the w3c validatorによる)に違反する必要があることが分かりました。これはHTML4の構文ルールにも当てはまると思います。例えば

は、無控除(HTML5の構文規則に違反する)ために:

<script type="text/javascript" src="/ui/scripts/lib/core.js" /> 

、有効なHTML5のためではなく、YSlowのスコア上の控除と:

<script type="text/javascript" src="/ui/scripts/lib/core.js"></script> 

私の仮説は、ある意味でこれですWebブラウザは2番目の例では最初のスクリプトではなく2番目の例ではスクリプトをスキャンします(2番目はオープンタグとクローズタグなので)。

誰もがこれについて別の方法を知っていますか? 1つは完全な100をsocreでき、まだ有効なHTML5を持っていますか?

答えて

4

どちらの場合でも、スクリプトタグからtype="text/javascript"を取り除くことができます。しかし、はい、クローズスクリプトタグが必要です。

ここでYSlowは正しくありません。

+0

HTML5ではtype属性が省略可能であったことはわかりませんでした(HTML4にデフォルト値がないため)。知っておいてよかった。しかし、ここでYSlowが間違っているかどうかは分かりませんが、考えてみてください。私の仮説が正しいとすれば、レンダリングエンジンはopen/closeタグを調べ、いくつかのjsコード(おそらくそれほど顕著ではない)を期待して停止します。しかしそれはまだ実行する必要がある操作です。 YSlowは、インラインスクリプトを使用しないように指示しています。私は、HTML5の構文ルールに違反するルールは使用すべきではないことに同意しますが、最初にルールが存在する理由を説明しているかもしれません。 – fredrik

関連する問題