8

そこで、 Firebug用のyslowをダウンロードし、構築しているサイトの結果を確認しました。

たとえば、静的コンポーネントにCookieのないドメインであるETagを使用し、expiresヘッダーを追加するという推奨事項が表示されています。

私は考えていますが、これらを修正することはできますが、データベース呼び出しなどの結果をキャッシュするなど、最初に実行できる他の最適化がたくさんある可能性があります。

私は、このサイトがYSlowの推奨を正当化するために「それほど」使用されることはないと思います。

必要になる前に最適化してはいけないことは知っていますが、ETagや期限切れヘッダーなどは、トラフィックが非常に多いサイトでのみ機能すると思います。

たとえば、リクエストごとにデータベースに対して5回(比較的小さい)の呼び出しを行う貧弱な実装を作成し、YSlowが、14個の画像がCookieのないドメインにないことを通知している場合、これら2つの最適化のどちらを使用する必要がありますか最初に取り組む?

4

7 に答える 7

5

YSlowでは.htaccessの第一人者ではありません。しかし、私は最近Joomla Webサイトを構築し、YSlowを使用して改善の領域を見つけました。上記で質問したYSlowの2つの領域(「Expiresヘッダーの追加」と「エンティティタグ(ETag)の構成」)は、ドメインのルートにある.htaccessファイルを介してアドレス指定しました。

Expiresヘッダーを追加する

Yahooは次のように述べています。「Webページはますます複雑になり、スクリプト、スタイルシート、画像、Flashが増えています。ページに初めてアクセスすると、すべてのコンポーネントを読み込むために複数のHTTPリクエストが必要になる場合があります。Expiresヘッダーを使用すると、これらのコンポーネントは次のようになります。キャッシュ可能。後続のページビューでの不要なHTTPリクエストを回避します。Expiresヘッダーはほとんどの場合画像に関連付けられていますが、スクリプト、スタイルシート、Flashを含むすべてのページコンポーネントで使用でき、使用する必要があります。」

これに対処するために、次のコードブロックを見つけて.htaccessファイルに追加しました(注:OPENANGLEBRACKETを "<"に、CLOSEDANGLEBRACKETを ">"に変更してください)。


    ########## Begin - Expires Headers
    #
    OPENANGLEBRACKET IfModule mod_expires.c CLOSEDANGLEBRACKET 
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/ico "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/html "access plus 1 day"
    ExpiresByType text/plain "access plus 1 week"
    ExpiresByType video/x-flv "access plus 1 month"
    OPENANGLEBRACKET /IfModule CLOSEDANGLEBRACKET
    #
    ########## End - Joomla! core SEF Section

エンティティタグ(ETag)を構成する

Yahooは次のように述べています。「エンティティタグ(ETag)はウェブサーバーのメカニズムであり、ブラウザはブラウザのキャッシュ内のコンポーネントがオリジンサーバー上のコンポーネントと一致するかどうかを判断するために使用します。ETagは通常、特定のサーバーホスティングに固有の属性を使用して構築されるためです。サイトの場合、ブラウザが1つのサーバーから元のコンポーネントを取得し、後で別のサーバーでそのコンポーネントを検証しようとすると、タグは一致しません。」

.htaccessファイルにこれを追加することで、Aグレードを取得したすべてのEtagを削除することにしました。


    ########## Begin - Remove Etags
    #
    FileETag none
    #
    ########## End - Remove Etags

.htaccessファイルに対するこれらの2つの変更により、これら2つのYSlowカテゴリのAグレードが得られました。

于 2009-09-16T13:36:33.107 に答える
4

YSlowは、ユーザーに表示されている「ユーザーエクスペリエンス」を確認するのに適しています。その推奨事項は、ページの読み込みが速く見えるようにすることです。たとえば、14枚の画像から1枚の画像まで、スピリットは純粋に視覚的なものです。ルールは、ブラウザが一度に並行してダウンロードできる画像はごくわずかであるためです。

バックエンドの最適化は、サイトが大きくなった場合にスケーラブルにするのに役立つため、常に最初に取り組みます。

于 2009-07-17T10:07:45.680 に答える
4

プロファイリングがページビューの最も遅い速度を引き起こしていると言っているものを修正します。

YSlowが不満を言っていることを修正すると、後で再度実行しなくても役立つ可能性が高いのに対し、データベースの最適化は継続的なタスクになることを忘れないでください。

つまり、画像を複数のドメインに分割してCookieを使用しないようにする場合は、画像を追加するときに、それらのドメインに分割する必要があり(できれば自動的に)、再度作業を行う必要はありません。

また、Expiresヘッダーを使用すると、サーバー上のリクエストのレベルが低くなり(応答をキャッシュできるため)、すべてのユーザーのアクセスが高速化されます

于 2009-07-17T10:14:25.057 に答える
2

YSlowはバックエンドコードを認識できないため、ブラウザのサイトとの相互作用にのみ基づいて推奨事項を表示できることに注意してください。確かに、最初にデータベース呼び出しを修正する必要があります。複数のリクエストやgzipなどに関するYSlowの推奨事項はかなり堅実ですが、コンテンツ配信ネットワークを使用するように私に永遠に教えてくれます。これは小さなサイトには意味がありません。すべての推奨事項に盲目的に多くの時間/お金を費やさないでください。そして、あなたが知っていることを考慮に入れてください。YSlowはそうしません。

于 2009-07-17T10:15:16.617 に答える
1

あなたは非常に正しく、次のようなアプリケーションコード内で最適化しています

  • 遅いデータベースクエリの最適化
  • 頻繁に実行されるクエリのキャッシュ
  • 頻繁に使用されるコンポーネントのコンポーネントレベルのキャッシュ
  • 高価なアプリケーションコードの一般的な速度の最適化

ほとんどの場合、YSlowの推奨よりもはるかに高いパフォーマンスの向上が得られます。

YSlowの最適化は通常、サイトの静的な部分のパフォーマンスを改善することで対処されます。静的な部分は、調整する前に、動的な部分よりもパフォーマンスが向上します。

于 2009-07-17T09:47:29.543 に答える
1

静的コンテンツにはCookieと有効期限を使用しないでください。

それはあなたを助けるだけでなく、を助けます。

自宅では低速のインターネットリンク、144Kbpsを使用しています。私はしばしばそれを容量までロードし、アップデートやビデオファイルをダウンロードします。そのため、レイテンシは最大800ミリ秒程度になります。

If-Modified-時間チェックの読み込みが非常に遅いため、多くのラウンドトリップを必要とするWebサイト。Expiresを使用するサイトは、動的コンテンツのみを実際にロードする必要があるため、適切にロードされます。

于 2009-09-16T13:56:18.930 に答える
0

多くの場合、バックエンドコードはフロントエンドコードよりも高速です。外部リソース(css背景画像、cssファイル、javascriptファイル)の量を最小限に抑えてみてください。

それは、私ができる最も重要な最適化です。

于 2009-07-17T10:01:39.937 に答える