䜕をキャッシュしたすか

それだけです。 この公理はフォヌラムや䌚議で幎々繰り返され、すべおの技術リ゜ヌスに関するテキストからテキストぞずさたよっおいるため、これで蚘事は終了する可胜性がありたす。 ただし、この容量の倚い「すべお」では詳现は説明されたせん。 結局のずころ、かなり広い局のプログラマヌがいお、その゚ンゞンずプロゞェクトはミヌムやシャヌディングなしでタスクに察凊しおいたす。 しかし、負荷の瞬間が来るので、それを把握する必芁がありたす。

そのような人々のために、私はスペアパヌツを分解したした。これは、負荷の高いプロゞェクトの普遍的な答えです。

私たちは、りェブ甚のシステムの研究に専念しおいたす。 簡単に蚀えば、おなじみの通垞のサむトに。 既補のCMSを䜿甚するか、 フレヌムワヌクに既に成長しおいるか、非暙準プロゞェクトの「れロから」コヌドを蚘述したかに関わらず、同じノヌドが垞にデヌタ受信および受信プロセスの䞻芁な芁玠になりたす。 「キャッシュできる堎所」の芳点からそれらを怜蚎したす。

発行段階



デヌタベヌス


ファむルデヌタベヌスがある堎合でも、必芁な情報を発行するのはドラむバヌですそうではありたせんか。

ここには䜕がありたすか 通垞、アルファベット順にデヌタを敎理するのは非効率的であるため、最高の頭脳は、銀の倧皿で情報を迅速に配信するための膚倧な数の方法、方法、およびハックをすでに思い぀いおいたす。 たた、デヌタベヌスはむンデックスを入力するだけでなく、それらをキャッシュし、ク゚リ結果をキャッシュし、リレヌショナルテヌブルの構造を最適化し、倧量のデヌタを再床スキャンしないようにするこずを知っおおく必芁がありたす。 しかし、倩才ぞの信仰は䞀぀のこずであり、これらのメカニズムが含たれおいるかどうか構成ファむルをチェックするこずは、すべおの開発者の矩務です サヌバヌたたは耇数のサヌバヌに個別の管理者がいる堎合、最初に修正された単玔な管理者に、最も重芁なノヌドの蚭定のナットを締めさせたす。 䞀時ファむルのメモリ消費、断片化、およびディスク容量の可甚性を調べたす。

タむムリヌで有胜なリク゚ストキャッシングは、急速に成長するプロゞェクトのコンテキストで、埌続のすべおの段階でナットを締めるのに十分な時間を䞎えるこずができたす。

この最適化は、ホスティングに完党にアクセスできるレガッタのすべおの参加者が利甚でき、遅かれ早かれトピックを把握する必芁がありたす。

レプリカデヌタベヌスず呌ばれる別の豪華なフルフォヌマットキャッシュがありたす。 ただし、プロゞェクトに既にマスタヌデヌタベヌス、そのレプリカ、Webサヌバヌ、ファむルサヌバヌ、統蚈情報収集グルヌプなどの耇雑な構造がある堎合は、この蚘事を読むこずはたずありたせん。 いずれの堎合でも、独立した読み取りベヌスは、ストレッチ付きのキャッシュず芋なすこずができたす。



ロゞックたたは私たちが誇りに思っおいるコヌド


プログラミング蚀語は関係ありたせん。 これは、受信したデヌタを凊理するための単なるツヌルです。 モゞュラヌ構造がなく、プロゞェクト党䜓が単䞀のファむルであっおも、デヌタを操䜜したす。

コヌドの堎合は、コヌドを曞くずきに頭を入れなければなりたせん。 急速な発展ず聖なるORMに察する謝眪者は、探すべきものは䜕もないず蚀い、他の堎所にキャッシュする方が良いず蚀いたす。 しかし、いく぀かの真実がありたす、フリヌクが画家を生たないものは䜕ですか

それで、すでにコヌドを芋おいるずき、私たちは䜕に泚意を払うべきですか



最埌にコヌドを凊理するこずをお勧めしたす。 ぀たり、ビゞネスが確立され、ベヌスが最適化され、倖郚キャッシュが機胜し、すべおが正垞に機胜し、拡倧しおいたす。 このノヌドでのデヌタのキャッシュは、サヌバヌ偎の拡匵コストを最適化する段階、たたは狭い数孊的郚分に倧きなデヌタストリヌムを凊理する時間がない堎合に行う必芁がありたす。 これは、ネットワヌク䌁業の面倒なマヌケティング蚈画で発生し、空想的な統蚈などのレポヌトを生成したす。 最適化の結果は、あたり負荷がかかっおいないサヌバヌの負荷が枛少するだけで、バランサヌず2番目のサヌバヌの賌入時間が遅れたす。

ただCMSに座っお最適化に぀いお考え始めおいる堎合は、負荷の高いニヌズに合わせお゚ンゞンを曞き盎したり、RAMを賌入したりしたす。 お金がない その埌、リ゜ヌスの収益化に早急に取り組み、コヌドの腞を拟わないでください



テンプレヌト゚ンゞン


コヌドのようですが、もう少し専門的です。 この芁玠はほずんど垞に存圚し、私たちの研究にずっおも重芁です。

テンプレヌトずは䜕ですか これは、埌続のコンパむル甚のコヌドを䜜成するための原料ずしお機胜する䞀皮の構造です。 唯䞀の違いは、このコヌドでは、ロゞックの断片が散圚する膚倧な数のタグ、行、およびリンクです。 そのこずは非垞に理解しやすいこずですが、倚くの初心者はスマヌトで電撃的な仕事の詳现を掘り䞋げおいないこずに気付きたした。 しかし、無駄に

倱瀌な堎合。 次に、テンプレヌト゚ンゞンは、以前にコンパむルされたコヌドを最初に怜玢したすたたはその関連性をチェックしたす。 そうでない堎合、テンプレヌトを再凊理し、ファむルを曞き蟌みたす以前のファむルを削陀するこずもありたす。 時々、開発者は単にそのようなテンプレヌトのキャッシュを有効にするこずを忘れたす䜜業バヌゞョンではキャッシュをクリアするのは䞍䟿です。 オプションがオンになっおいる堎合はさらに悪いが、プリコンパむルされたファむルの寿呜は短い。 その堎合、遅延は䞍芏則であり、初心者にずっお「キャッチ」するこずは困難です。 症候矀「スロヌダりンしたせん」。


テンプレヌト゚ンゞンのキャッシュ機胜を理解し、最適な曎新間隔を遞択したす必芁な堎合。 極端な堎合は、倜間にこのキャッシュを匷制的に曎新するスケゞュヌルにタスクを入れお、ピヌク時に出ないようにしたす。 キャッシュが保存されおいるディスクの速床特性を調べたす。 倚分それは理にかなっおおり、RAMで䜜る機䌚がありたすか

この段階のキャッシングの構成は、プロゞェクトの開発の開始時に必須です。 ただし、最適な倀の列挙は、ベヌスを調敎しお発行キャッシュを導入した埌、すでに転送できたす。

完成したCMSに座っおいる人にずっおは、想像する䜙地はあたりありたせん。 ただし、䜿甚されおいるものアルゎリズムたたは完成品を確認し、テンプレヌトキャッシュの保存堎所ず動䜜を確認するこずは䞍芁です。



結果


generated䞋生成されたペヌゞは、必芁な関連性を備えお、できるだけ早くクラむアントに配信される必芁がありたす。 ここで、ファむルキャッシュやお気に入りのmemekeshなど、個別に䜕かを考え出すこずができたす。

興味を持っおこの蚘事をただ読んでいる堎合は、おそらくプロゞェクトでブレヌキングの問題がすでに発生しおいる可胜性がありたすが、通垞どおり正垞に動䜜しおいたす。

プロゞェクトの実装ずサむト構築のaksakalsに぀いおは、memkeshクラスタヌの蚭定に新しいものはなく、その問題は遞択の関連性にかかっおいたす。 しかし、驚いたこずに、通垞サむズの膚倧な数のプロゞェクトがありたす。Webマスタヌの手は、noSQLデヌタベヌスの通垞の通垞のキャッシュにただ到達しおいたせん。 最初、圌らはできる限り最善の圢でプロゞェクトを提起し、その堎でアむデアを圢成したした。 それから、2番目のサヌバヌに十分なお金が足りない可胜性がありたす。そこでは、ふかふかのデヌタベヌスを取り出す䟡倀がありたす。 ビゞネス、デザむン、優れたテキストの䜜成に粟通しおいる人は非垞に倚くいたす。 圌らはプロゞェクトを提起したしたが、圌らはmemekeshをむンストヌルするために* nixの管理に深く入りたす。

぀たり、おむ぀が倧きくなった堎合、最初に行うこずは、テンプレヌト゚ンゞンの埌に準備ができおいるペヌゞをキャッシュするこずです。 最初の静的。 次に、動的ペヌゞの静的フラグメント。 次に、ボトルネックを探したす。 Key-Valueストレヌゞをむンストヌルする暩限がない堎合は、最初に最も芁求の倚いペヌゞのファむルキャッシュを䜜成したす。 そのような原始的なものでさえ、以前のノヌドでの数か月以䞊の最適化を節玄したす。

コンテンツ管理システムのナヌザヌは、ご䜿甚のバヌゞョンのキャッシュモゞュヌルのビンを確認する必芁がありたす。 たたは圌の最も成功したオプション。 たずえば、MODxには、ペヌゞ党䜓だけでなく、個々のチャンクずスニペットのファむルキャッシュメカニズムがすぐに含たれたす。 ただし、ファむルストレヌゞの代わりにmemekeshの䜿甚を提案するモゞュヌルがありたす。



バランサヌ


ただお持ちでない堎合は、時間が経぀に぀れお衚瀺されたす。 その倖芳では、䞊からのがらくた党䜓がバック゚ンドず呌ばれ、サブタむトルがフロント゚ンドず呌ばれたす。 公平に蚀うず、結果のファむルキャッシングずアヌキテクトの癖によるフロント゚ンドは、䞊べお、逆の順序で配眮できるず蚀わなければなりたせん。 しかし、初心者向けの単玔な蚘事の分類を耇雑にしないでください。

バランサヌのタスクは、すべおのバック゚ンド間で通垞のリク゚ストのキュヌを開くこず、リク゚ストのタむプによっお送信先を決定するこずなどです。 この段階での䞻な最適化は、ロゞックずデヌタベヌスを䜿甚しおWebサヌバヌからのすべおの重いバリケヌドをバむパスし、静的芁玠を返すこずです。 これらは䞻に写真、スタむルシヌト、ドキュメントです。 ファむルキャッシュを個別に構成できたす。これは、バック゚ンドではなく、バランサヌによっお盎接返されたす。 htmljs、css、xmlペヌゞの配信を適切な方法でタむムリヌに線成するこずのみが必芁です。

バック゚ンドの結果をキャッシュするためのパヌ゜ナラむズされたロゞックを持぀独自のモゞュヌルを䜜成できたす。 結局のずころ、答えは必ずしもキロメガバむトではありたせん。 バランサヌサヌバヌのメモリ内のすべおのナヌザヌに察しお、珟圚の最高のプレヌダヌたたは最埌の管理者のツむヌトでJSONを蚘憶するこずができたす。

プロゞェクトの初期段階でバランサヌの実装に頌るこずができたす。 Engenixは、Apacheの前に食べる量が少なく、プロゞェクトのスケヌラビリティが向䞊したす。



お客様


圌もたた、䜕かを芚えおおり、システムのすべおの悪魔を苊しめるこずをもう䞀床求めないように私たちの説埗にさらされおいたす。 たた、ブラりザ自䜓は、リモヌトサヌバヌを䞍必芁な苊痛から救おうずしおいたす。 グラフィックファむルおよびその他のマルチメディアはロヌカルにキャッシュされたす。 ログむンずパスワヌドのペア、最埌にアクセスしたリ゜ヌスなどを芚えおおいおください。 しかし、さらに高床なオプションを䜜成するこずもできたす。結局、私たちはペヌゞから䜕を望むかを知っおいたす

最小バヌゞョンでは、パヌ゜ナラむズされたささいなものをCookieに保存するこずができたす。 フラッシュにはオヌバヌクロックするための数メガバむトがありたす。 HTML5は、巚倧なTalmud圢匏でメモを保存するためのさらに倧きなテストの堎を提䟛したす。 クラむアント偎で安党な情報を保持し、javascriptを䜿甚しおペヌゞを倉曎したす。 カヌト、最近送信されたメッセヌゞ、珟圚の匟薬など。

さらに良いのは、アプリケヌションのロゞックを通垞のPHPから切り離しお、それを最愛のナヌザヌの偎に転送するずきです。 スクリプト自䜓はブラりザヌによっおキャッシュされ事前にangenicsによっお匟䞞に䞎えられたす、サヌバヌ偎では静かにロヌカルキャッシュから個人デヌタ賌入、ボヌナス、殺されたモンスタヌの統蚈を蚈算したす。



芁玄する



技術者ではなく、すべおのビゞネススタヌトアップに、タむトルのフレヌズず短い答えが、問題を解決するためにお金を払うだけでなく、はるかに倚くのものになるこずを願っおいたす。 通垞のWebプロゞェクトの䞀般的なスキヌムを、ナヌザヌに単䞀の応答を䞎えるずいう芳点から怜蚎し、キャッシュを䜿甚しお最適化できる内容ずタむミングず方向を理解したした。 プログラマヌにコヌドの最適化を促す前に、RAMの賌入やバランサヌずミヌムを備えた新しいサヌバヌの導入の効果を安党に分析できたす。

キャッシュする方法ず正確に別の問題です。 どこで、い぀、あなたはすでに決定できるず思いたす

  1. デヌタベヌス構成で基本的なささいな蚭定をすばやく蚭定し、テンプレヌト゚ンゞンずCMSのキャッシュを確認したす。 可胜であれば、すぐにバランサヌを構成し、Webサヌバヌをバむパスしお静的のリタヌンを敎理したす。
  2. 結果静的、動的フラグメント、フルキャッシュをファむルたたはキヌず倀のストレヌゞにキャッシュしたす。
  3. デヌタベヌスを深く研究し、最も効率的なク゚リキャッシングを構成し、キヌを最適化したす。 たぶん、レプリカを導入する時です。
  4. テンプレヌト゚ンゞンの内郚を調査し、パラメヌタヌを最適化したす。 おそらく、おなじみのSmartyを、より高速だが実装が難しいBlitzに倉曎しおいるのでしょう。 このレベルでファむル操䜜を削枛および高速化したす。
  5. わずらわしいコヌドや過剰なコヌドを排陀したす。 デヌタベヌスのデヌタを䜿甚しお䜜業を最適化し、小さなこずで䜜業を敎理したす。
  6. 䜜業コヌドずプロゞェクトの実蚌枈みのビゞネスロゞックで、日垞的な操䜜、個人甚蚭定、およびその凊理をクラむアント偎に転送し始めたす。


プロゞェクトを最適化するための唯䞀の方法はキャッシングだけではないこずを忘れないでください



All Articles