問題タブ [edge-side-includes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - 逆プロキシされた HTTP リクエストの後処理? (Akamai の ESI のように)
比較的ボリュームの多いコンテンツ サイトを運営しています。ほとんどのコンテンツ サイトと同様に、各ページの大部分は比較的静的です。記事はめったに変更されないため、何らかの形式の静的/エッジ キャッシングの候補となります。ただし、大きな問題が 2 つあります。セカンダリ ページ要素 (ナビゲーション、最近のコンテンツ リストなど) は頻繁に変更され、「完全な」キャッシュ ページはすぐに無効になります。また、ユーザー固有の情報など、より動的なビットをページに含めることもよくあります。
コンテンツを後処理し、プロキシ/エッジでインクルードを処理できるようにするリバース プロキシ/ロード バランサーがあれば、非常に便利です。バックエンドへの最初のリクエストで大まかなテンプレートが返され、プロキシ ソフトウェアがそのテンプレートを処理して完成させることができます。マークアップは次のようになります。
この例でわかるのは、Cookie の値に基づいて含まれるファイルを決定し、プルする URL を含むハッシュ、タイムアウト、およびエラーが発生した場合に表示するデフォルトのテキストを返す小さな Ruby です。エラー。理論的には、すべてのインクルードを非同期でリクエストすることもできます。
私の理解では、Amazonはこのようなことをしています。さまざまなページ コンポーネントがバックエンド サービスによって生成され、ページ全体の速度を確保するために厳密なタイムアウト制限が適用されます。彼らのCDNサービスにこのようなものが含まれることを望んでいましたが、そうではありません!
エッジ サイド インクルード (ESI) の W3 仕様は、ほぼ私が望んでいるものです。ただし、それに対するサポートはほとんどありません。これは Akamai から入手できます。それを行う Oracle ソフトウェアがいくつかあります。また、オープン ソースの Varnish キャッシュには非常に基本的な実装があります。また、これは非常に醜い XML 形式でもあります。
問題は、何が私にやりたいことをさせてくれるのかということです。他の誰かがこの方法で物事を行っていますか?
ruby-on-rails - ESI:includeを介したCookieの設定、方法は?
私はesiを使用して私のサイトで忍者のキャッシュを作成しようとしています。アイデアは、サイトはほとんど静的であり、ユーザーがログインしているかどうかにかかわらず、私はただ凝ったことをする必要があるということです。そのため、ページAにを配置し、ページBのアプリケーションにトリガーを設定しようとしました。
このようにして、ページAをニスにキャッシュし、サーバーにページBという小さな作業を処理させることができます。
しかし、ページBで設定したCookieは、ページAのヘッダーに転送されず、機能しませんでした= /
これは私が可能にしようとしていることですか?
ajaxを使用することもできますが、ページをユーザーに送信する前にサーバー内でこれを行う方が正しいようです。
ps:esiタグを作成できません= /
varnish - ワニス ESI は認識されているが含まれていない
皆さんこんにちは。Varnish で Edge Side Includes を使用して静的 HTML シェルをキャッシュし、動的 HTML と JSON オブジェクトを含めています。
HTML の ESI は正しく含まれていますが、JSON オブジェクトの ESI は含まれていません。デバッグ ステートメントは、Varnish がそれを認識することを確立しますが、JSON ESI を含めないことを不可解に決定します。
ローディング構造は次のとおりです。
繰り返しますが、esi 1とesi 3は問題なく動作しますが、esi 2は含まれていません。esi 2のコンテンツは次のとおりです。
XML のように見えない ESI コードがエラーを引き起こすことを読んだので、ランタイム パラメーターesi_syntax=0x7を設定しました。さいころはありませんが、少なくともデバッグ データを取得しています。
esi 2の壊れた呼び出しは次のようになります。
そして、esi 3の (動作中の) 呼び出しは次のようになります。
前述したように、Varnish は ESI をインクルードしようとしていることを認識しているように見えますが、varnishlog から得られる唯一の関連するデバッグ メッセージは次のとおりです。
クライアントに表示される出力には、すべての通常のコンテンツが含まれていますが、 <esi> タグはそのまま残されています。これは、上記のデバッグ メッセージに表示されているものとまったく同じように見えます。
esi 2 が解析/インクルードされない理由を知っている人はいますか? どんな助けでも大歓迎です!
heroku - Varnish Edge Side includes (ESI) は Heroku でサポートされていますか?
Edge Side includes が Heroku の Varnish 実装でサポートされているかどうか知っている人はいますか?
更新: 最終的に、Varnish の実装について Heroku に問い合わせるサポート リクエストを提出しました。ここに私の要求があります:
こんにちは、ワニスの実装が Edge Side includes をサポートしているかどうか疑問に思っていましたか? ワニスの実装でサポートされているものとサポートされていないものに関する情報はありますか? (たとえば、他の場所で、エントリを PURGE できないと読んだことがありますか?)
...そして彼らの反応:
ESI はサポートしていません。ただし、デプロイごとにワニス キャッシュを消去します。これにより、コードの一部である静的アセットがデプロイ時に確実に削除されるため、キャッシュは新しいアセットまたは変更されたアセットをピックアップします。
お役に立てれば。
-クリス
もちろん、PURGE とはルートを手動でパージすることを意味しており、これはサポートされていません。
http - エッジ サーバー インクルード (ESI)
ESI を使用するのは良い習慣ですか、それとも古い技術ですか? より良い代替手段はありますか。私は CDN とキャッシュ サーバーの使用に精通していますが、この ESI は通常、フロント エンドをロードする以上のことを行うアプリケーション向けでした。
php - ESI:includeスクリプト内からどのようにCookieを設定しますか?
サーバーにコールバックしてCookieを設定する単一のESIインクルードを使用してVarnishを介してロードされている基本的なPHPページがあります。クッキーはドメインアクセスなどで設定されますが、ESIを介して呼び出された場合、クッキーは設定されません。ESIインクルードパスに直接アクセスする場合、Cookieは問題なく設定されます。VCLがCookieを強制終了する可能性があると考えて、Varnish構成を何もキャッシュしないように設定しました。
これ...
...これを含む...
私はVarnishとESIを初めて使用するので、これが既知の制限(ESIまたはVarnishのESI実装のいずれか)であるかどうか疑問に思い始めていますが、オンラインで問題の説明を見つけることができません。
php - Varnish Cache は ESI インクルードを行いません
非常に単純な Varnish Cache ESI テストでさえ機能しないという問題があります。
試行錯誤した後、私はここで尋ねると思いました。
基本的に、ESI ファイルは含まれません。インクルードせずにHTMLを返すだけです。
これが私のワニス開始コマンドです:
私がテストしているURLは次のとおりです。
私の vcl ルール:
1) デフォルト.vcl
私のサンプルテストesiコード
2) test.php
esi への php インクルード
3) esi_1.php
上記の vcl ルールのさまざまなバリエーションを試しました。
すべてが機能しません。どこが間違っているのかわかりませんか?
アドバイス/ヘルプをいただければ幸いです。
ありがとうございました。
varnish - ESIの複数のフラグメント、単一のリクエストにニスを塗りますか?
wordpress マルチサイトのかなり大規模な展開のために、ページの提供時間を改善する任務を負っています。
コンテンツのページ全体のキャッシュにワニスを使用し、その ESI 機能を使用してユーザーのログイン状態に関連付けられた動的コンテンツを含めることを検討しています。ブログの ID、または記事 ID やユーザー ID を含むその他のカスタム ヘッダー。
ESI を介して複数のページ フラグメントを含め、バックエンドからの単一の応答にグループ化する方法を誰かが考え出したことがあるかどうか知りたいです (たとえば、メニューにユーザー名を表示し、サイドバーにカスタム ユーザー ウィジェットを表示する必要があります。ページの残りの部分は静的であり、ワニスによってキャッシュされます. ESI では、2 つのフラグメントを取得して適切な場所に配置するために、バックエンドに 2 つのリクエストを行うことを義務付けていますが、バックエンドでは両方の HTML コードを簡単に生成できます。 1 回実行し、処理のためにワニスに戻します)
http - Edge-Side-Includes:esi:inlineタグはどのように機能しますか
私はESI(Edge-Side-Includes)の仕様を見てきましたが、esi:inline要素がどのように機能するかを完全に理解することはできません。誰かがそれを説明できますか?