0

HTMLの最小化は、Googleのページ速度でまだ改善の余地がある唯一のセクションです。

私のサイトはすべて動的であり、HTMLはすでに動的であるDeflatedため、サーバーにこれ以上プレッシャーをかける理由はありません(送信する前にリアルタイムでページを最小化したくありません)。

私にできることは、テンプレートファイルを最小化することでした。私のテンプレートファイルは混在しPHPHTMLいるので、かなり安全だと思うが、コミュニティで改訂したいコードをいくつか思いついた。

// this will loop trough all template files
// php is cleaned first so that line-comments will not interfere with the regex
$original = file_get_contents($dir.'/'.$file);
$php_clean = php_strip_whitespace($dir.'/'.$file);
$minimized = preg_replace('/\s+/', ' ', $php_clean);

これにより、テンプレートファイルが単一の非常に長いファイルとして、DBコンテンツが挿入されるいくつかの場所と交互になります。グーグルのホームページのソースは私が得たものと多かれ少なかれ似ているので、彼らは同様のアプローチに従っているのだろうか。

質問1:潜在的な問題を予測していますか?
質問2:とにかくより良い(これを行うためにより効率的な)ものはありますか?

また、テンプレートは有効なHTMLではないため(ヘッダーとフッターが含まれているなど)、HTMLを検証しようとしていないことを忘れないでください。

編集:テンプレートファイルが展開時に最小化されることを考慮に入れてください。CSSおよびJavascriptファイルはYUICompressureand Closureを使用して最小化および圧縮されるため、テンプレートファイルはデプロイ時に同様に最小化されます。クライアントの要求ではありません。

ありがとうございました。

4

4 に答える 4

2

Google独自のClosureTemplates(Soy)は、デフォルトで行末の空白を取り除き、テンプレートデザイナーは。を使用して明示的にスペースを挿入し{sp}ます。これはおそらくPHPから切り替えるのに十分な理由ではありませんが、私はそれをあなたの注意を喚起したかっただけです。

さらに、HTMLの縮小に関するPage Speedのドキュメント(http://code.google.com/p/page-speed/wiki/MinifyHtml)で推奨されているように、HTML4では一部のタグを除外できることを理解してください。</p>、、など</td>を除外でき</tr>ます。終了タグを省略できる要素の完全なリストについては- O、HTML 4 DTD(http://www.w3.org/TR/REC-html40/sgml)で「」を検索してください。 /dtd.html)。開始タグと終了タグはど​​ちらもオプションであるため(DTDでは "")、、、、、およびタグを完全に省略<html>することもできます。<head><body><tbody>O O

idclass(単一のクラス名を使用)などの属性(http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2)を囲む引用符を省略することもできますtype。単純なコンテンツ(つまり、一致/^[-A-Za-z0-9._:]+$/)があります。可能な値が1つしかない属性の場合、値を除外できます(たとえば、checkedではなく単にchecked=checked)。

XHTML用のシンプルなLALRパーサーの次の世界に備えるために、私たちは何年にもわたって条件付けられてきたため、これらのヒントに反発する人もいるかもしれません。したがって、DaveRaggettのHTMLTidyのようなツールは、適切な終了タグと属性値の前後の引用符を使用してHTMLを生成します。しかし、それに直面しましょう。すべてのブラウザーにはすでにHTML 4を理解するパーサーがあり、新しいブラウザーはXHTMLではなくHTML 5パーサーを使用するため、サイズに最適化されたHTMLを快適に記述できるはずです。

そうは言っても、グーグルやフェイスブックのようないくつかの大企業に加えて、ページサイズはレイテンシーのごくわずかな要素であると私は推測します。したがって、自分のサイトを最適化する場合、それはおそらくパフォーマンスではなく自分自身の執着傾向によるものです。

于 2010-10-19T18:49:39.527 に答える
1

空白は重要な場合があります(pre要素など)。

特に大きなページ(つまり、HTMLを縮小するのに十分な大きさ)がある場合は、HTML Tidyを使用して、結果をキャッシュしました。

tidy -c -n -omit -ashtml -utf8 --doctype strict \
    --drop-proprietary-attributes yes --output-bom no \
    --wrap 0
于 2010-10-07T16:04:26.117 に答える
1

コンテンツの取得、空白の削除、preg replaceの呼び出しは、縮小されたHTMLが節約できる帯域幅よりもはるかに長い時間がかかるため、このアプローチでは読み込み時間の問題が発生することになると思います。

于 2010-10-07T16:09:15.967 に答える
0

私は数週間すべてのサイトでテストを実行してきましたが、この方法はかなり一貫していると言えます。<pre>テンプレートのコンテンツにのみ影響するため、不明または類似のものを台無しにするリスクはほとんどありません。

デプロイ前に実行されるため、サーバーへの影響はありません。実際には、ファイルが小さくなるにつれて少しスピードアップするはずです。

前に述べたように、これはデプロイ前にテンプレートファイルでのみ実行されるため、データベースからのすべてのコンテンツは影響を受けないことに注意してください。

この方法は、それを生産に移すのに十分なほどしっかりと継ぎ目があります。

何か問題があれば、ここに投稿します。

于 2010-10-19T17:10:23.037 に答える