コンポジットを接続する

この小さなメモでは、1C-Bitrixのプロジェクトで複合サイト技術を接続するプロセスを検討します。



念のため、テクノロジーの説明へのリンクをいくつかご紹介します。



マーケティング

テクニカル



導入前の内容:





まあ、他に何が見えますか?



そして、ここに内なる完璧主義者の声が来ます。「私はもっと早く、もっと早く、欲しい、欲しい、やりたい」。



しばらくの間、この静かなほのめかしの非難で生きることができます。 コンポジットは、特にプロジェクト全体が失敗することなく機能する場合は特に、最初に急いで行うべきものではありません。



しかし、一度あなたがやることができることを理解したら。 そうしないと、声が落ち着きません。 クッキーはゴツゴツしていて、スムージーは味がなく、パンケーキはケーキではありません。



すぐに適切なオプションを検討しましょう。プロジェクトのテストコピーがあり、外部から保護されています。 そうでない場合は、実行してください。 あなたはそれをすることはできません-いつものように働いてください、神は許します、クライアントは見えません。 冗談。 コピーするだけです。 開始するには、[設定]→[製品設定]→[複合サイト]のテストコピーの管理者に移動し、揺るぎない手で、[自動合成]を断固と​​して取消不能にオンにします。 その後、サイトのすべてのインターフェイスの綿密かつ慎重なテストを開始し、さまざまなユーザーでの配信をシミュレートします。 まず、ページを更新せずにajaxによって再描画されたブロックの動作に注意を払います。 100%に近い確率では、いくつかのブロックが正しく機能しません。 その理由は単純で、技術自体にあります。 複合キャッシュは、htmlキャッシュの古い技術の論理的な継続です。キャッシュされたコンテンツは、最初のユーザーの最初のヒットによって作成され、他のすべてのユーザーに送信されます。 そのため、たとえば、すべてのユーザーが誰かが小さなバスケットで「最初に作成された」ことを示す状況があります-すべて同じです。 または、たとえば、全員に他のユーザーの「承認」が表示されます。 もちろん、誰もこのユーザーで実際にログインするわけではないため、承認は引用符で囲まれていますが、たとえば、個人アカウントを入力する招待がその下に表示されます(技術的には、このブロードキャストの承認中に生成されたブロックhtmlコードそれから他の皆に)。



プラットフォームの注意と理解が必要ですが、この効果を取り除くことはそれほど難しくありません。 まず、すべてのユーザーに「同じhtml」を提供するコンポーネントをローカライズする必要があります。 コンポーネントがコンポジットに「反対」と投票し、手動の介入を必要とするパターンを決定します。 最初は動的なページは考慮されません(バスケット、検索ページ、個人アカウント、チェックアウトページなど)。



以下はデバッグに役立ちます:ファイル/(bitrix|local)/php_interface/dbconn.phpの値がtrueの定数BX_COMPOSITE_DEBUG(デバッグ後に無効にすることを忘れないでください!)そして、Google Chrome Bitrix Composite Notifierの拡張機能。 デバッグモードでは、 AddMessage2Logシステム関数が使用されます 。これは、一部のコンポーネントテンプレートが「反対」に投票した場合にログに書き込みます(関数が機能するには、LOG_FILENAME定数にログファイルへのフルパス形式の値を設定する必要があります)。 定数を記述するか、特定のページに書き込むか、グローバルに拡張機能をインストールして分析を開始します。



匿名ユーザーの下で、サイトのすべてのページを参照します。これは「複合」である必要があります。 通常の場合、ブラウザの拡張機能アイコンはアクティブ(色)である必要があります。







一部のページでアイコンが非アクティブ(灰色)になっている場合、このページのテクノロジーは機能せず、把握する必要があります。







これは、ログファイルが役立つ場所です。 開いて、どのパターンが「反対」かを確認し、複合モードに適合させます。 関心のあるすべてのページで拡張インジケータが「点灯」するまで続行します。 その後、各ユーザーに固有のすべてのコンテンツがバックグラウンドでロードされ、静的とともにキャッシュされないことを確認する必要があります。 通常、これはユーザー、承認ブロック、お気に入りのアイテム数などの小さなバスケットです。 この段階で、ダイナミックパーツのすべてのダイナミクスを取り出し、必要に応じてスタブを作成します。 ここでは、プログラミングの観点から適応プロセス自体を意図的に説明していません。 ABC bookで詳しく説明されています。この場合のスピーチは、コンポーネントコードに関するよりも移行プロセスの編成に関するものです。



すべてが正常で、ページがキャッシュから出始めた場合、キャッシュが十分に長く存続し、ヒットごとに上書きされないことを確認する必要があります。 これは、スタブまたは「静的」コンテンツが動的データを使用する場合に当てはまる可能性があります。 たとえば、静的として指定されたテンプレートでは、テンプレートへのtime()関数の出力が登録されます。 あなたは決して知らない、誰かがびっくりした。 そのようなページを明らかにするのは非常に簡単です。 キャッシュフォルダー/ bitrix / html_pages / {domain} /でデバッグモード(BX_COMPOSITE_DEBUG)が有効になっている場合、ファイルは拡張子* .delete。{Microtime}のファイルに上書きされる前にコピーされます。 そのようなファイルが多数ある場合は、それらを調べて違いを特定し、これらの違いを作成するコードを最適化することは理にかなっています。 可能であれば、コード内のそのようなセクションを削除するか、JSバージョンに置き換えます。



コンポーネントをCompositeで使用するための準備が整ったら、コードを戦闘バージョンのサイトに転送できます。 コンバットコンポジットでは、まだオンにしません。 繰り返しますが、すべてのインターフェイスの動作をテストします。すべてが正しく行われていれば、コードはどのタイプのキャッシュでも同等に機能します。 正常に動作しますか? 確認しますか? そう? もう一度確認しましたか? さて、ボタンを押しましょう。 設定でキャッシュを削除し、自動合成をオンにして、すべてを再度確認します。 Composite設定ですべてのサイトドメインを指定することを忘れないでください? よくできました。 「シークレットモード」でサイトを開き、F12を押してF5を数回押します。 ほんの数回。 最初のヒットで、ページはサーバーによって「通常どおり」与えられ、2番目のヒットに従って、複合キャッシュが作成されます。サーバーは、作成された複合キャッシュを与え、「now show it」ディレクティブを受け取ります。 そして、3番目のヒットで、Compositeの「フル活用」のページを取得します。 すべてが正常に機能する場合、デバッガーの[ネットワーク]タブは次のようになります。







ご覧のとおり、ステータス304のドキュメントを取得します。 ページは変更されておらず、リソースはキャッシュから取得されます。 同時に、インタラクティブなインターフェース要素は機能し続けます。 F5を打つと、速度を楽しむことができます。



そして最後に、いつものように、このすべての美しさへの軟膏の小さなハエ。



デフォルトでは、複合キャッシュはファイルに保存されます。 BitirxVMを使用し、この仮想マシン、BitrixのWeb環境パッケージに基づいてホストしている場合、または必要な構成を自分で構築するのに十分なストレートアームを持っている場合-キャッシュはバックエンドへのリクエストなしでNginxに提供されます。



したがって、応答ヘッダーは次のようになります:X-Bitrix-Composite:Nginx(file)。 これはすでに優れており、すでに高速です。 しかし、あなたが絶対に正しくやろうとするなら(この声も...)、複合キャッシュをmemcachedに「再配置」することは論理的です。 共有メモリに保存します。もちろん、特にサーバーが通常のHDDにある場合は、速度が向上します。 そして、これはすべて「箱から出してすぐに」得られるはずですが、悲しいかな。 現時点(2017年4月)では、管理パネルのコンポジット設定でストレージタイプをmemcachedに切り替えてから、BitrixVMコントロールパネルを介してNginx構成を更新しても、本格的な結果は得られません。 memcachedがポートを介して通常の方法で接続されている場合、X-Bitrix-Composite:Nginx(memcached)ヘッダーを取得します。つまり、一見正しいですが、サーバーステータスが200 OKのたびにページが返されます。 304修正されていない、つまり 再びロードされました。 しかし、ドキュメントをサーバーから取得する時間を無駄にすることなく、ドキュメントを変更せずにブラウザキャッシュから収集できるように304ステータスを達成したかったのです。 UNIXソケットを介してmemcachedに接続しようとすると、Nginxは動作しません。すべてをスキップし、ヘッダーは標準のX-Bitrix-Composite:Cache(200)になります。 つまり はい、Compositeはオンになっており、キャッシュはありますが、「バックエンドに移動する必要があります」。これは回避策と言えば、テクノロジーの本質をいくらか低下させます。 Bitrixの技術サポートはこれらのニュアンスを知っており、それを修正することを約束しているため、現時点では、BitrixVMでNginxと組み合わせてファイルストレージを使用します。



そして、これは、あなたの内面に耳を傾けないでください、彼にクッキーを与えた方が良いです。



All Articles