web-dev-qa-db-ja.com

GTmetrixとYSlowによって提案されているように、外部URLコンポーネントの期限切れヘッダーを追加するにはどうすればよいですか?

Bluehost でホストされているWebサイトの読み込み時間を短縮しようとしています。したがって、YSlowセクションの下で GTmetrix を使用してパフォーマンススコアを確認すると、以下のように4つの静的コンポーネントの「有効期限ヘッダーを追加する」と記載されています。

Expiresヘッダーを追加する

There are 4 static components without a far-future expiration date.

    https://www.googletagmanager.com/gtag/js?id=UA-49812165-2
    https://www.google-analytics.com/analytics.js
    https://www.trustedsite.com/rpc/ajax?do=tmjs-visit&Host=surf2ship.com&Rand=1565102041274
    https://cdn.ywxi.net/meter/surf2ship.com/105.png

したがって、これについてより良い答えを得るために、問題をグーグルで検索し、以下のリンクを調査しました

  1. 2012年に公開されたmoz.comの投稿
  2. Stackoverflow post-Add Expires headers-which is published on 201

上記のすべてのページでは、一般的なファイルタイプの有効期限ヘッダーを追加する方法について説明しています。例については、以下を参照してください.htaccessファイル。正確なソースを指定するのではなく、すべての一般的な形式を指定します。

# Media: images, video, audio
  ExpiresByType audio/ogg "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"

特定のURLにExpireヘッダーを追加するにはどうすればよいですか? https://www.google-analytics.com/analytics.js

これがサイトの現在のスコアです GTmetrix

1
Nipun Tharuksha

@Evgeniyはすでに彼の回答でカバーしているため、サイトの外部のリソースにHTTP応答ヘッダーを追加するには、これらのリソースをローカルで(管理するサーバーに)コピーする必要があります。これにより、HTTP応答ヘッダーをHTTP応答。

ただし、これを行うかどうかは別の問題であり、各インスタンスを個別に評価する必要があります。アプリケーションサーバーから「ローカル」にリソースを提供しても、訪問者のパフォーマンスが向上しない場合があります。また、見かけ上の「静的」リソースが更新された場合、またはサードパーティのCookieが使用されている場合(機能が望ましくない場合もあります)、機能が低下する可能性もあります。

GTmetrix(およびその他の「パフォーマンス」ツール)からの結果は、「助言」としてのみ見なされます。独自のサイト分析を開始する場所。最初に影響を評価せずに提案blindlyを実装しないでください。 「将来の有効期限」がないことは必ずしも間違っていません。 「自動化されたパフォーマンスツールレポート」を単純に満たす機能を実装することは間違っています。

質問で述べた他のリンクの期限切れヘッダーを追加する必要がありますか?.

  1. https://www.googletagmanager.com/gtag/js?id=UA-49812165-2
  2. https://www.google-analytics.com/analytics.js

コメントで述べたように、これらのリソースにはExpiresヘッダーがないわけではないことに注意してください(さらに重要なのはCache-Control: max-age header)、それはあなたが「遠い未来」と呼ぶかもしれないものではありません。 gtag/jsファイルは15分間キャッシュされ、analytics.jsは「妥当な」2時間キャッシュされます。これらの同じリソースが他の多くのWebサイトで使用されているという事実と相まって、訪問者があなたのサイトにアクセスするまでにそれらはおそらくすでにキャッシュされており、キャッシュ時間はこれらのリソースがユーザーの存続期間中キャッシュされ続けるのに十分な長さでさえありますにアクセスします(他のタブで他のWebサイトを閲覧し続けると、リソースは再びキャッシュされます)。

Googleはこれらのリソースを高速CDNから事前に圧縮したものを提供するため、独自のサーバーでホストすることで最初のダウンロード時間を超えることはありません。

StackExchange(一般的に、SEO /パフォーマンスに関して正しいことを行うと見なされます)要求analytics.js Googleから直接(上記のURLで)、ローカルにコピーしません。

Google自体 これらのファイルをローカルで提供することはお勧めしません 。ただし、Googleは「パフォーマンス」を主な理由として述べていません。

GoogleのサーバーからJavaScriptファイルを参照すると、新しい機能や製品のアップデートが利用可能になったときに確実にアクセスできるため、レポートで最も正確なデータを入手できます。

これらのファイルをローカルで提供するルートに進むと、メンテナンスがさらに問題になる可能性があります。 WordPressを使用している場合は、更新の確認プロセスの自動化に特に役立つ プラグインがあります を使用できます。

  1. https://www.trustedsite.com/rpc/ajax?do=tmjs-visit&Host=surf2ship.com&Rand=1565102041274

これはstaticリソースではないようです! (たぶんGTmetrixはtext/javascript応答に騙されていますか?)応答はリクエスト間で異なり、(サードパーティ)Cookieを6日間設定します。これをローカルにコピーしてキャッシュすると、目的が果たせず、機能が損なわれる可能性があります。 (または、まったく必要ないのですか?)

  1. https://cdn.ywxi.net/meter/surf2ship.com/105.png

Amazon CloudFront CDNから提供され、gzipされます。 Expiresヘッダーはexpiredですが! Cache-Control: public, max-age=86400ヘッダーは、すべてのリモートの主流ブラウザーがこのリソースを1日間キャッシュすることを保証します。

結論

IMOでは、ローカルにコピーしてこれらの「リソース」をキャッシュすることによるメリットはほとんどありません。これはより多くの作業であり、ユーザーのパフォーマンスを低下させる可能性さえあります。良くないGTmetrix(およびその他の「ツール」)は、ガイドとしてのみ意図されています。実際のユーザーのパフォーマンスは本当に重要です。

4
MrWhite

いいえ、ホストしていないファイルのヘッダーを自分で管理することはできません。あなたが言及したこれらのファイルのヘッダーを管理する単一の方法(Googleアナリティクスなど)は、それらをローカルでホストすることです。この場合、更新も管理する必要があります。

一般に、次のようにhtaccess内のファイルをファイルタイプと照合できます。

<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
</IfModule>

ただし、特定のファイルのヘッダーを設定する場合は、filesmatchディレクティブを使用します。

 <FilesMatch "^(googleanalytics.js)$">
        FileETag None
        Header set Cache-Control "max-age=604800, public, must-revalidate"
        Header set Expires "Thu, 31 Dec 2020 20:00:00 GMT"
    </FilesMatch>
1
Evgeniy

ソリューション here を参照してください。これは私にとって非常にうまく機能しています。

0