ホームページ >Java >&#&チュートリアル >ブラウザのキャッシュを使用してサーバーの負荷を軽減し、Java Web サイトのアクセス速度を向上させるにはどうすればよいですか?

ブラウザのキャッシュを使用してサーバーの負荷を軽減し、Java Web サイトのアクセス速度を向上させるにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-08-05 11:57:201401ブラウズ

ブラウザのキャッシュを使用してサーバーの負荷を軽減し、Java Web サイトのアクセス速度を向上させるにはどうすればよいですか?

要約:
インターネットの発展に伴い、Web サイトのアクセス速度がユーザーの注目を集めるようになりました。 Java Web サイト開発では、ブラウザのキャッシュを適切に使用することで、サーバーの負荷を効果的に軽減し、Web サイトのアクセス速度を向上させることができます。この記事では、ブラウザ キャッシュの仕組みを紹介し、Java コード例を使用して、ブラウザ キャッシュを使用して Web サイトのパフォーマンスを向上させる方法を説明します。

1. ブラウザ キャッシュの仕組み
ブラウザ キャッシュとは、ブラウザがアクセスしたリソースをローカル キャッシュに保存することを意味します。ユーザーがリソースに再度アクセスすると、リソースはキャッシュから直接読み取られます。サーバーへのリクエストを開始する必要がないため、アクセス速度が向上します。ブラウザのキャッシュは通常、強力なキャッシュとネゴシエートされたキャッシュの 2 つのタイプに分類されます。

  1. 強力なキャッシュ
    強力なキャッシュとは、ブラウザがキャッシュからリソースを直接ロードし、サーバーにリクエストを送信しないことを意味します。応答ヘッダーに Expires または Cache-Control を設定すると、強力なキャッシュの有効期限を制御できます。 Expires は絶対時間ですが、Cache-Control は相対時間です。

たとえば、Java では、HttpServletResponse:

response.setHeader("Expires", "Wed, 21 Oct 2020 07:28:00 GMT");

のヘッダーを設定するか、Cache-Control:

response.setHeader("Cache-Control", "max-age=3600");

を設定することで Expires を設定できます。 、リソースは有効期限が 1 時間に設定されています。

  1. ネゴシエーション キャッシュ
    ネゴシエーション キャッシュとは、ブラウザがサーバーにリクエストを送信し、サーバーから返された応答ヘッダーに基づいてリソースの有効期限が切れているかどうかを判断することを意味します。リソースの有効期限が切れていない場合、ステータス コード 304 が返され、ブラウザはキャッシュからリソースを直接ロードします。リソースの有効期限が切れている場合、リソースはサーバーから再度ダウンロードされます。

応答ヘッダーに Last-Modified と Etag を設定すると、ネゴシエーション キャッシュを制御できます。 Last-Modified はリソースの最終変更時刻を表し、Etag はリソースのバージョンを識別するために使用される一意の識別子です。

たとえば、Java では、HttpServletResponse のヘッダーを設定することで Last-Modified と Etag を設定できます。

response.setHeader("Last-Modified", "Wed, 21 Oct 2020 07:28:00 GMT");
response.setHeader("Etag", "123456789");

ブラウザがリソースを再度リクエストすると、リクエスト ヘッダーに If が含まれます。 -Modified-Since と If-None-Match の場合、サーバーはこれら 2 つの値をリソースの Last-Modified および Etag と比較することによって、リソースが期限切れかどうかを判断します。

2. ブラウザ キャッシュを使用してアクセス速度を向上させる方法
Java Web サイトの開発では、次の方法でブラウザ キャッシュを使用してアクセス速度を向上させることができます:

  1. 適切なキャッシュ制御を設定する
    リソースの特性と変更頻度に応じて、適切な有効期限、キャッシュ制御、最終更新日、および Etag を設定します。静的リソースの場合はキャッシュ時間を長く設定でき、動的リソースの場合はLast-ModifiedとEtagを動的に生成することでキャッシュを制御できます。

たとえば、静的リソースの場合:

response.setHeader("Expires", "Wed, 21 Oct 2022 07:28:00 GMT");
response.setHeader("Cache-Control", "max-age=31536000");

動的リソースの場合:

String lastModified = generateLastModified(resource);
String etag = generateEtag(resource);
response.setHeader("Last-Modified", lastModified);
response.setHeader("Etag", etag);
  1. バージョン番号を使用してキャッシュを制御する
    頻繁に更新されるリソースの場合, キャッシュは、リソースの URL を変更するか、変更のたびに URL にバージョン番号を追加することで制御できます。

たとえば、リソースの URL にバージョン番号を追加します。

String version = getVersion();
String url = "/static/js/main.js?v=" + version;

リソースを更新するたびに、変更する必要があるのはバージョン番号のみです。

  1. 適切なキャッシュ戦略を設定する
    リソースの特性と重要性に基づいて、適切なキャッシュ戦略を設定します。静的リソースや頻繁にアクセスされるリソースの場合はキャッシュ時間を長く設定でき、動的リソースやリアルタイムで更新する必要があるリソースの場合はキャッシュ時間を短く設定できます。

たとえば、静的リソースの場合:

response.setHeader("Expires", "Wed, 21 Oct 2022 07:28:00 GMT");
response.setHeader("Cache-Control", "max-age=31536000");

動的リソースの場合:

response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "no-store, must-revalidate");
  1. リソースのマージと圧縮
    複数の CSS または JavaScript ファイルを結合する1 つのファイルにマージしてファイル サイズを圧縮すると、リクエストの数が減り、アクセス速度がさらに向上します。

たとえば、複数の CSS ファイルを結合して圧縮します:

List<String> cssFiles = Arrays.asList("style1.css", "style2.css");
String mergedCss = mergeAndCompressResources(cssFiles);
response.getWriter().write(mergedCss);

結論:
ブラウザのキャッシュを合理的に利用することで、サーバーの負荷を効果的に軽減し、Java のアクセス速度を向上させることができますウェブサイト。適切なキャッシュ制御、複雑なバージョン番号、適切なキャッシュ戦略、リソースのマージと圧縮を設定することにより、Web サイトのパフォーマンスがさらに向上し、より高速で優れたユーザー エクスペリエンスを提供できます。

以上がブラウザのキャッシュを使用してサーバーの負荷を軽減し、Java Web サイトのアクセス速度を向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。