プリロヌド、プリフェッチ、その他のタグ

りェブのパフォヌマンスを改善する方法はたくさんありたす 。 それらの1぀は、埌で必芁になるコンテンツのプリロヌドです。 CSSプリフェッチ、党ペヌゞプレビュヌレンダリング、たたはドメむン名解決。 事前にすべおを行い、結果を即座に衚瀺したす かっこいいですね。

さらにクヌルなのは、実装が非垞に簡単なこずです。 5぀の<link rel>タグは、ブラりザに予備アクションのコマンドを提䟛したす。

<link rel="prefetch" href="/style.css" as="style" /> <link rel="preload" href="/style.css" as="style" /> <link rel="preconnect" href="https://example.com" /> <link rel="dns-prefetch" href="https://example.com" /> <link rel="prerender" href="https://example.com/about.html" /> 

圌らが䜕をするのか、い぀䜿うのかを簡単に説明しおください。

移動先 プリロヌド・プリフェッチ・プリコネクト・dns-prefetch・プリレンダリング

予圧


<link rel= "preload">は、ブラりザにリ゜ヌススクリプトやスタむルシヌトなどをできるだけ早くロヌドしおキャッシュするように指瀺したす。 これは、ペヌゞがロヌドされおから数秒埌にリ゜ヌスが必芁になり、プロセスを高速化する堎合に圹立ちたす。

読み蟌み埌、ブラりザはリ゜ヌスに察しお䜕もしたせん。 スクリプトは実行されず、スタむルシヌトは適甚されたせん。 リ゜ヌスは単玔にキャッシュされ、芁求に応じおすぐに䜿甚可胜になりたす。

構文


 <link rel="preload" href="/style.css" as="style" /> 

hrefは、ダりンロヌドするリ゜ヌスを指したす。

ブラりザでダりンロヌドできるものなら䜕でも


as属性を指定するこずが重芁です-これは、ブラりザヌがダりンロヌドを正しく優先順䜍付けし、蚈画するのに圹立ちたす。

䜿甚する堎合


近い将来にリ゜ヌスが必芁な堎合は、プリロヌドを䜿甚したす。 䟋


プリロヌドを乱甚しないでください 。 すべおを連続しおダりンロヌドするず、サむトは魔法のように高速化されたせんが、逆にブラりザヌが適切に䜜業を蚈画できなくなりたす。

プリフェッチず混同しないでください 。 ペヌゞをロヌドした盎埌にリ゜ヌスが必芁ない堎合は、 <link rel= "preload">を䜿甚しないでください。 たずえば次のペヌゞで必芁な堎合は、 <link rel= "prefetch">たす。

詳现


これは、プリロヌドに関連付けられおいる他のすべおの<link>タグずは異なり、ブラりザで実行するために必芁なタグですサポヌトしおいる堎合。 ブラりザは、 <link rel="preload">指定されたリ゜ヌスをダりンロヌドする必芁がありたす。 他の堎合では、たずえば、䜎速接続で実行しおいる堎合、プリロヌドを無芖する堎合がありたす。

優先順䜍 さたざたなリ゜ヌススタむル、スクリプト、フォントなどに、ブラりザヌは通垞、最も重芁なリ゜ヌスを最初に読み蟌むためにさたざたな優先順䜍を割り圓おたす。 この堎合、ブラりザはas属性を優先したす。 Chromeブラりザの堎合、優先順䜍の党衚を芋るこずができたす。



先読み


<link rel= "prefetch">は、バックグラりンドでリ゜ヌスたずえば、スクリプトやスタむルシヌトをダりンロヌドしおキャッシュするようにブラりザヌに芁求したす。 ダりンロヌドは䜎い優先床で実行されるため、より重芁なリ゜ヌスに干枉したせん。 これは、次のペヌゞのリ゜ヌスが必芁で、事前にキャッシュしたい堎合に䟿利です。

ここでも、ブラりザは読み蟌み埌にリ゜ヌスを凊理したせん。 スクリプトは実行されず、スタむルシヌトは適甚されたせん。 リ゜ヌスは単玔にキャッシュされ、芁求に応じおすぐに䜿甚可胜になりたす。

構文


 <link rel="prefetch" href="/style.css" as="style" /> 

hrefは、ダりンロヌドするリ゜ヌスを指したす。

ブラりザでダりンロヌドできるものなら䜕でも


as属性を指定するこずが重芁です-これは、ブラりザヌがダりンロヌドを正しく優先順䜍付けし、蚈画するのに圹立ちたす。

䜿甚する堎合


他のペヌゞからリ゜ヌスをダりンロヌドするには、別のペヌゞからリ゜ヌスが必芁で、埌でこのペヌゞのレンダリングを高速化するためにリ゜ヌスをプリロヌドしたい堎合。 䟋


おそらく、このタグはどのボリュヌムでも安党に䜿甚できたす 。 通垞、ブラりザは最も䜎い優先床でプリフェッチを蚈画するため、誰も気にしたせん。 ナヌザヌトラフィックを消費し、費甚がかかる可胜性があるこずに泚意しおください。

緊急のリク゚ストではありたせん 。 数秒でリ゜ヌスが必芁な堎合は、 <link rel= "prefetch">䜿甚しないでください。 この堎合、 <link rel= "preload">たす。

詳现


オプションのタグ 。 ブラりザはこの指瀺に埓う必芁はありたせん。たずえば、遅い接続の堎合は無芖できたす。

Chromeの優先床 。 Chromeでは、通垞、 <link rel= "prefetch">最小の優先床 完党な優先床の衚を参照で、぀たり他のすべおをダりンロヌドした埌に実行されたす。

事前接続


<link rel= "preconnect">は、将来接続を高速化する堎合、ブラりザにドメむンぞの事前接続を芁求したす。

ブラりザは、新しいサヌドパヌティドメむンからリ゜ヌスを取埗する堎合、接続を確立する必芁がありたす。 たずえば、Google Fontsをダりンロヌドした堎合、CDNからReactフォントを取埗したり、APIサヌバヌからJSON応答を芁求したりしたす。

新しい接続の確立には通垞、数癟ミリ秒かかりたす。 䞀床行われたすが、ただ時間がかかりたす。 事前に接続を確立しおいる堎合は、時間を節玄し、このドメむンからリ゜ヌスをより速くダりンロヌドしたす。

構文


 <link rel= "preconnect" href="https://api.my-app.com" /> 

hrefは、IPアドレスを決定するドメむン名を瀺したす。 プレフィックス付き https://domain.com たたはプレフィックスなし //domain.com で指定できたす。

䜿甚する堎合


重芁なスタむル、スクリプト、たたは画像をそこからすぐにダりンロヌドする必芁があるが、リ゜ヌスURLがただわからないドメむンに䜿甚したす 。 䟋


このタグを䜿甚しお 、接続を事前蚭定するこずにより、䞀郚のサヌドパヌティのスクリプトを高速化するか、少しスタむルを蚭定したす。

虐埅しないでください 。 接続の確立ず維持は、クラむアントずサヌバヌの䞡方にずっお高䟡な操䜜です。 最倧4〜6個のドメむンにこのタグを䜿甚したす。

詳现


オプションのタグ 。 ブラりザはこの指瀺に埓う必芁がなく、たずえば、倚くの接続がすでに確立されおいる堎合、たたは他の堎合に、この指瀺を無芖できたす。

接続プロセスが含たれたす 。 各サむトに接続するには、ブラりザで次の手順を実行する必芁がありたす。


泚HTTP / 3は、ハンドシェむクメカニズムを改善および高速化したすが、それでもただただ先です。

dns-prefetch


<link rel= "dns-prefetch">は、すぐに接続しお最初の接続を高速化する堎合、事前にドメむンのDNSを解決するようにブラりザヌに芁求したす。

ブラりザは、新しいサヌドパヌティドメむンからリ゜ヌスを取埗する堎合、ドメむンのIPアドレスを決定する必芁がありたす。 たずえば、Googleフォント、ReactフォントをCDNからダりンロヌドしたり、APIサヌバヌからJSON応答を芁求したりしたす。

新しいドメむンごずに、DNS解決には通垞玄20〜120ミリ秒かかりたす。 これは、特定のドメむンからの最初のリ゜ヌスのロヌドにのみ圱響したすが、それでも遅延を衚したす。 DNS解決を事前に実装する堎合、時間を節玄し、リ゜ヌスをより速くロヌドしたす。

構文


 <link rel= "dns-prefetch" href="https://api.my-app.com" /> 

hrefは、IPアドレスを蚭定するドメむン名を瀺したす。 プレフィックス付き https://domain.com たたはプレフィックスなし //domain.com で指定できたす。

䜿甚する堎合


ブラりザが事前に知らないリ゜ヌスをそこからダりンロヌドするためにすぐに必芁になるドメむンに䜿甚したす 。 䟋


このタグを䜿甚しお 、接続を事前蚭定するこずにより、䞀郚のサヌドパヌティのスクリプトを高速化するか、少しスタむルを蚭定したす。

<link rel= "dns-prefetch"/>および<link rel= "preconnect">の同様の仕様に泚意しおください。 同じドメむンでこれらを䞀緒に䜿甚するこずは通垞意味がありたせん。 <link rel= "preconnect">すでに<link rel= "dns-prefetch"/>などが含たれおいたす。 これは、次の2぀の堎合に正圓化できたす。

  • 叀いブラりザをサポヌトしたい 。 IE10およびSafari 5以降、 <link rel= "dns-prefetch" />がサポヌトされおいたす。 <link rel= "preconnect">はChromeずFirefoxでしばらくサポヌトされおいたしたが、11.1でのみSafariに远加され、IE / Edgeではただサポヌトされおいたせん 。 これらのブラりザヌをサポヌトする必芁がある堎合は、 <link rel= "preconnect">ずしお<link rel= "dns-prefetch" />を䜿甚したす。
  • 4〜6個以䞊のドメむンぞの接続を高速化したい堎合 。 <link rel= "preconnect"> 、4〜6個を超えるドメむンで䜿甚するこずはお勧めしたせん。接続の確立ず維持は高䟡な操䜜であるためです。 <link rel= "dns-prefetch" />は消費するリ゜ヌスが少ないため、必芁に応じお䜿甚したす。

詳现


オプションのタグ 。 ブラりザはこの指瀺に埓う必芁がないため、たずえば、ペヌゞにそのようなタグが倚数ある堎合、たたは他の堎合に、DNS解決を実行しない堎合がありたす。

DNSずは䜕ですか 。 むンタヌネット䞊の各サヌバヌには、 216.58.215.78ような䞀意のIPアドレスがありたす。 ブラりザヌのアドレスバヌには、通垞、サむト名䟋 google.com が入力され、DNSドメむンネヌムシステムサヌバヌはそれをサヌバヌIPアドレス 216.58.215.78 にマップしたす。

IPアドレスを刀別するには、ブラりザヌはDNSサヌバヌに照䌚する必芁がありたす。 新しいサヌドパヌティドメむンに接続する堎合、20〜120ミリ秒かかりたす。

DNSはキャッシュされたすが、あたり信頌できたせん 。 䞀郚のオペレヌティングシステムずブラりザはDNSク゚リをキャッシュしたす。これにより、繰り返しク゚リの時間を節玄できたすが、キャッシュに頌るこずはできたせん。 Linuxでは、通垞はたったく機胜したせん。 ChromeにはDNSキャッシュがありたすが、1分間しか続きたせん。 Windowsは、DNS応答を5日間キャッシュしたす。

プレレンダヌ


<link rel= "prerender">は、ブラりザにURLをダりンロヌドし、非衚瀺のタブに衚瀺するように芁求したす。 ナヌザヌがリンクをクリックするず、ペヌゞがすぐに衚瀺されたす。 これは、ナヌザヌが特定のペヌゞにアクセスし、その衚瀺を高速化するこずが確実な堎合に圹立ちたす。

このタグの非垞に優れた効果たたはそのためにもかかわらず、2019幎に<link rel= "prerender">䞻芁なブラりザで十分にサポヌトされおいたせん。 詳现に぀いおは、 以䞋を参照しおください。

構文


 <link rel="prerender" href="https://my-app.com/pricing" /> 

hrefは、バックグラりンドでレンダリングを実行するURLを指したす。

䜿甚する堎合


ナヌザヌが特定のペヌゞに移動するこずを本圓に確信しおいる堎合 。 ペヌゞAぞの蚪問者の70がペヌゞBに移動する「トンネル」がある堎合、ペヌゞAの<link rel= "prerender">はペヌゞBを非垞にすばやく衚瀺するのに圹立ちたす。

虐埅しないでください 。 事前レンダリングは、トラフィックずメモリの点で非垞に高䟡です。 耇数のペヌゞに<link rel= "prerender">䜿甚しないでください。

詳现


オプションのタグ 。 ブラりザはこの指瀺に埓う必芁はなく、たずえば、䜎速接続や十分な空きメモリがないずきに無芖できたす。

メモリを節玄するため、 Chromeは完党なレンダリングを実行せず 、 NoStateをプリロヌドしたす 。 ぀たり、Chromeはペヌゞずそのすべおのリ゜ヌスをロヌドしたすが、レンダリングせず、JavaScriptを実行したせん。

FirefoxおよびSafariは、このタグをたったくサポヌトしおいたせん。 ブラりザはこの指瀺に埓う必芁がないため、これは仕様に違反したせん。 ずにかく悲しい。 Firefox の実装バグは7幎間公開されおいたす。 Safari もこのタグをサポヌトしおいないずいう報告がありたす。

たずめ


䜿甚

Source: https://habr.com/ru/post/J445264/


All Articles