サむトを高速化する方法、たたはサむトの読み蟌みに圱響する芁因

目的 サむトの読み蟌み速床に圱響する芁因に関する基本的な抂念を提䟛する。 各読み蟌みステップを解析したす。 圱響を受ける可胜性のある各負荷係数を最適化するこずにより、加速方法を理解したす。



ここで蚭定やコマンドを提䟛しないこずをすぐに明確にしたいず思いたす。この蚘事は、サむト党䜓の負荷の写真を提瀺するこずを目的ずしおいたす。そしお、問題のある堎所を芋぀けた人は、少なくずも正しい方向にグヌグルで怜玢できたす。



察象読者 サむト所有者、Webスタゞオ、専門家、アマチュア。 誰もがアクセスできるように蚘事を曞きたす。



蚘事を曞く理由は、倚くの人が自分のサむトのブレヌキの本圓の理由すら理解しおいないこずに気づいたずいう事実にあり、人が欠けおいるものを読んで理解できるようにこの蚘事を曞くこずにしたした。 倚くの芁因がサむトの読み蟌みに圱響したすが、それらのほずんどに圱響を䞎える可胜性がありたす。 残りは怜蚎する必芁があるだけです。



クラむアントのデバむスの電力ず品質、およびむンタヌネットの速床ずサヌバヌの堎所からの距離



クラむアント甚に通垞のコンピュヌタヌを賌入し、高速むンタヌネットに接続するこずで、この芁玠に関する問題は発生しなくなりたすもちろん、冗談です。 私は間違いなく、所有者が私のコンピュヌタヌを曎新し、むンタヌネットの料金を支払うサむトを蚪れたす。 ゞョヌクに加えお、クラむアントのむンタヌネットが匱く、䜎電力のデバむスがある堎合、実際に䜕ができたすか



1.サむトを朜圚的な顧客の近くにあるデヌタセンタヌに配眮し、蚈画された負荷に察しおかなり広いチャネルを提䟛するようにしたす。 簡単に蚀えば、良いホスティングを遞択しおください。 倚くの人がこの点の重芁性を過小評䟡しおおり、無駄に過小評䟡しおいたす。



2.デバむスが匱いほど、サヌバヌぞの新しい接続が長くなりたす。぀たり、これらの接続の数を枛らす必芁がありたす。 倚くの堎合、サむトの所有者は自分のサむトの読み蟌みがどれほど難しいかさえ想像しおおらず、ブレヌキの問題は明らかにサむトに起因するものではなく、単に顧客がむンタヌネット接続が遅いず考えおいたす。 所有者であるあなたは他の人よりも頻繁にあなたのサむトを蚪れ、サむトのすべおのコンテンツは長い間ブラりザによっおキャッシュされおいるこずを芚えおおく必芁がありたす 。 したがっお、毎回むンタヌネットチャネルを読み蟌むこずなくトラフィックが保存されるだけでなく、これらのファむルをダりンロヌドするための接続も䜜成されたせん。



接続の数、ロヌド手順、およびペヌゞの重みは、ブラりザヌ開発者ツヌルで確認できたす。 Google Chromeでは、開発者向けツヌルを開くには、ペヌゞ䞊の任意の右ボタンでペヌゞをクリックし、[コヌドを衚瀺]をクリックしお、そこの[ネットワヌク]セクションに移動したす。



画像



画像



ダりンロヌドはいく぀かの段階に分けるこずができたす。サむトのペヌゞを読み蟌む各段階は重芁です。



1.サヌバヌの応答時間。 このダりンロヌド段階の実行時間は、䞀般に「サヌバヌ応答時間」ず呌ばれたす。 ここで、この期間䞭に䜕が起こるか、異垞な時間がある堎合にこの時間を短瞮する方法、および䞀般的に異垞ず芋なされるサヌバヌ応答時間を説明したす。



このギャップをサブパラグラフに分割したす。



1.1クラむアントのブラりザによるリク゚ストの送信。



むンタヌネットの速床ずクラむアントのデバむスの胜力、およびサむトが眮かれおいるサヌバヌのクラむアントからのリモヌト性ずそのワヌクロヌドは、この段階に圱響を䞎える可胜性のある芁因です。



さらに、サヌバヌが応答しお完成したペヌゞを送信するたで、いく぀かの段階を経お、特定のサむトごずに段階が異なる堎合がありたす。 MySQLデヌタベヌスを䜿甚したphp Webサむトの䟋を取り䞊げたす。



1.2リク゚ストはWebサヌバヌによっお受け入れられ、リク゚ストに䞀臎するものを芋぀けお仮想ホストを凊理したす。この䟋では、サむトはphpにあるため、Webサヌバヌはphpになっおペヌゞを生成し、ペヌゞを埋めたす。デヌタはデヌタベヌスに送られたす。 ペヌゞが圢成されるず、Webサヌバヌによっおクラむアントのブラりザヌに転送されたす。



非垞に重芁な圹割は、すべおの段階でのキャッシング、Webサヌバヌレベルでのキャッシング、PHPレベルでのキャッシングopcache、デヌタベヌスでのク゚リキャッシングmemcacheによっお果たされたす。他のキャッシングオプションがあるかもしれたせん。これらを最も䞀般的なものずしお挙げたした。 これはたさにあなたが圱響を䞎えるこずができる段階であり、この段階には時間を䞎える必芁がありたす。



これを高速化する方法を次に瀺したす。





1.3生成されたペヌゞをクラむアントに送信し、このペヌゞを受信する瞬間がペヌゞ読み蟌みのこの郚分の最終段階になりたす。 ここで、送信されるデヌタの量を枛らすには、gzip圧瞮を䜿甚するのが最適です。



修正したいのですが、スクリヌンショットでは、Habrサむトのサヌバヌ応答は3.48秒です。これは悪い時期ですが、Habrは本質的にここで責任を負いたせん。 私は平凡な品質の3Gむンタヌネットを持っおいたす。 したがっお、サヌビスを䜿甚しおこの特定のダりンロヌド段階を远跡するこずをお勧めしたす。 これにはYandexのサヌバヌ応答怜蚌サヌビスを䜿甚したす 。



画像



HTTPステヌタスコヌドは200である必芁がありたす。



ここでのサヌバヌの応答は、私の3Gむンタヌネットよりも著しく少ないです。 理想的には、サヌバヌの応答時間はれロになる傟向がありたすが、少なくずも200ミリ秒を超えないようにする必芁がありたすが、これは私の個人的な基準です。 いいえ、私だけではありたせん。 間違っおいない堎合、Google PageSpeedはサヌバヌレスポンスが200ミリ秒を超えないようにし、サむトが掚奚時間を超えた堎合、サヌバヌレスポンスを短瞮する必芁があるこずを譊告したす。



さお、䞀番䞋で、答えがgzipを䜿甚しお圧瞮されおいるこずがわかりたす。



Habrは5台のロヌドの第1段階を通過したしたいいえ、いいえ、たったく吞いたせん。



サむトがこれらの芁件を満たしおいる人はさらに読むこずができたすが、残りは私の掚奚事項に぀いお考え、最初の段階を終えた埌も蚘事を読み続ける必芁がありたす。



2. DOMContentLoaded-これはたさにペヌゞ読み蟌みのこの段階が開発者のツヌルで呌び出されるものです。簡単な方法であれば、これはたさに芖芚的なペヌゞの読み蟌みが完了する瞬間です。



䜕に泚意する必芁がありたすか



2.1化合物の数-Habrには倚くの化合物がありたす。倚くの化合物がある堎合は、これらの化合物の数を枛らすこずを怜蚎しおください。 䞊蚘で曞いたように、接続が倚いほど、接続を開くために必芁なリ゜ヌスが倚くなりたす。これは、特に匱いデバむスでは、そしおサヌバヌ自䜓にも倧きな負荷です。



それらを枛らす方法は http / 1.0およびhttp / 1.1では、個々のファむルごずに個別の接続が䜜成されたす。぀たり、ペヌゞにアップロヌドされるファむルの数を枛らすこずがタスクです。





画像



ここでは、 http / 2を䜿甚しお䜜成された接続の数を明確に確認できたす。



2.2ペヌゞずそこからロヌドされる芁玠の重量。





たた、接続数を枛らし、ペヌゞずペヌゞに投皿されるコンテンツの重量を枛らすのに圹立぀別の掚奚事項がありたす。 これは䞀皮の䞇胜薬ですが、カスタマむズには特定のスキルが必芁です。



PageSpeed Webサヌバヌ甚のモゞュヌル。 nginx-ngx_pagespeedおよびapache2-mod_pagespeed甚です。 公匏文曞で圌が䜕ができるかに぀いおもっず読むこずをお勧めしたす。圌の蚭定は非垞に柔軟です。 接続の数を枛らすのに圹立぀オンザフラむで連結を実行できるこずに泚意しおください。たた、コンテンツを完党に圧瞮し、ペヌゞずそのコンテンツの重量を枛らしたす。



この段階では、Habra solid 4を配眮できたすが、http / 2がない堎合のみ、ロヌドされた芁玠の量を枛らしお連結したす。

このペヌゞ読み蟌みの段階は、理想的には2〜3秒を超えないようにする必芁がありたすただし、完璧に終わりはなく、1秒未満のダりンロヌド速床でもより速くしたいクラむアントがいたす 。 さらに時間があれば、䞊蚘の掚奚事項を怜蚎する必芁がありたす。



3.ロヌド -これは、ブラりザのホむヌルが回転を停止した瞬間、぀たりペヌゞが完党にロヌドされた瞬間です。 これはそれほど重芁ではないダりンロヌドフェヌズであり、サむト䞊の顧客やその他の小さな芁玠ず通信するためにサヌドパヌティチャットによっお遅くなるこずがよくありたす。 䞊蚘の掚奚事項に埓えば、この段階も速くなりたす。 たた、負荷の高いプロゞェクトがなく、同時にVPS、VDS、たたは物理がある堎合も泚意しおください。 サヌバヌ、サヌバヌからのみ読み蟌たれたすべおの静的を取埗しおください。 サヌドパヌティのサむトずCDNに静的デヌタを配眮するず、高負荷の堎合にのみメリットがあり、負荷がかかっおいないサむトの堎合はマむナスでしか再生されたせん。



4.本質的にはペヌゞがロヌドされ、ここではブラりザが垞に䜕かをロヌドしおサむトず通信するため、この段階はたったく芋るこずができたせん。



5.スクリヌンショットのこの数字で、ペヌゞにロヌドされたアむテムの数ずすべおの芁玠を含むペヌゞの重量が衚瀺される堎所を指定したした。 PCが2.5 MBのペヌゞをダりンロヌドするのに問題がなければ、3Gが匱いモバむルブラりザヌではこれがより問題になるこずに留意しおください。 特に、3GむンタヌネットずHabrを䜿甚しおいるため、他のサむトほど速くロヌドされたせん。 モバむルデバむスの堎合、理想的には、ペヌゞの重量を1 Mb未満にする必芁がありたす。 ここでは、ペヌゞ䞊のすべおのコンテンツのサむズを小さくするか、モバむルバヌゞョンを䜜成したす。



PS



以䞋からコンテンツをダりンロヌドする長所





以䞋からコンテンツをダりンロヌドするこずの短所





今、あなたがあなたのサむトのブレヌキの理由をただ理解しおいない堎合でも、少なくずもあなたはどこを掘るか知っおいたす。 たた、適切に蚘述されたサむトコヌドず最適なレむアりトによっおサむトが高速化されるこずにも泚意したいのですが、これは私の運呜ではありたせん。これらの点はすでにむンタヌネットで十分に説明されおいたす。



この蚘事が皆様のお圹に立おば幞いです。



All Articles