web-dev-qa-db-ja.com

ドキュメントの特定の部分(<body>の一部のみ)の.htaccessファイルにCache-Controlを設定できますか

Google Page Speed Insights を使用して、重要なスクロールせずに見えるコンテンツを最初に読み込むようにHTMLを構成すると、ページのパフォーマンスが向上することに気付きました(そして、現在のパフォーマンスで) 。モバイル71/100-Pc 87/100)。

私の質問は、Apacheのmod_headerがアクティブになっており、<head>タグ内にコンテンツがない場合、ページの任意の部分(たとえば、本文内)にData Expiresを設定することは可能ですか?

2
fiskolin

Expiresヘッダーはページのフラグメントではなく、ページに関連しています。

基本について説明します。

HTMLをブラウザに送信します。そのすべてまたはストリームは、例にとって重要ではありません。

ブラウザはそれを受け取り、解析を開始します。同時に、解析を開始すると、画像、CSS、JSなど、他のすべてのリンクファイルが呼び出されます。いくつかの並列接続が確立され、リンクファイルの一部が開始されます。ブラウザはそれらを検出し、適切なパーサー/レンダラーを割り当ててファイルを操作します。

ファイルが画像の場合、画面に表示されます。 CSSの場合、パーサーは受信したHTMLにルールの適用を開始し、コンテンツの表示を表示/変更します。スクリプトの場合、トリガーを探して読み取ります。トリガーがない場合、ファイルはメモリ上にとどまり、トリガーがある場合、呼び出されたアクション/関数は動作を開始します。

スクロールせずに見えるのは、画面上で最初に表示されるコンテンツを指す用語で、新聞からのものです。

CSSとJSは、スクロールせずに見える範囲ではなく、非同期またはコンテンツのレンダリングと並行しています。 CSSはドキュメント全体に影響を与え、JSはプログラミングされたものに影響を与えます。

やりたいことがCSSファイルとJSファイルのキャッシュを制御する場合は、.htaccessでルールを使用できます。

<FilesMatch "\.(css|js)$">
    Header set Cache-Control "max-age=31536000, public, s-maxage=31536000"
    Header set Pragma "cache"
</FilesMatch>

またはこのように

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
</IfModule>

そのコンテンツ(HTMLファイル)がiframeとして挿入されない限り、ページのコンテンツの一部に影響を与えることはできません。その状況では、まだ別のファイルに影響を与えていますが、最終ページでは、一部のみがキャッシュルールの影響を受けているように見える場合があります。

2
PatomaS