問題タブ [esi]
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.
php - ESIタグ内のphp変数にアクセスする
現在、php プロジェクトでワニス キャッシング システムの ESI インクルード機能を使用しようとしています。私のシナリオでは、esi タグ内の php 変数にアクセスする必要があります。次のようなもの...
これは esi タグ内の完全な URL です。これは正常に機能します。つまり、サーバーから読み取りカウントを取得し、ページの残りの部分はキャッシュから提供されます。しかし、どうすればesiタグに渡すことができる動的URLを生成できますか.
私は次のようなことを試しました....
また
$(variable_name)
orはesiタグ内に変数を追加するための構文ですが、$(variable_name{key_name})
PHP変数にアクセスしている間は機能していないようです。
私もこのようなことを試しました...
これは機能します。esi タグ内からスーパーグローバルにアクセスできることを示しています。
esi タグ内の php 変数にアクセスする方法や、esi インクルードで使用する動的 URL を生成するその他の方法はありますか。
symfony - symfony フラグメントが Varnish に 403 を返すことがあります
Symfony 2.3 アプリは、ポート 80 を介して nginx を使用する Web サーバー上にあります。Varnish4 は、SSL ターミネーターとしてポート 443 上の Nginx を使用して、ポート 80 上のフロントエンド サーバー上で実行されています。これは Varnish3 でもテストされ、同じ結果が得られました。ほとんどの場合、これは非常にうまく機能します。
数分後、一部の ESI は完全な Symfony テンプレートで 403 Forbidden エラーを返します。これは、キャッシュされたフラグメントの有効期限が切れたときに発生していると思います。
次の方法で問題を強制できます。
- Varnish を再起動してキャッシュをクリアする
- HTTP 経由でページをロードする (すべて OK)
- HTTPS 経由でページを読み込んでいます (すべて OK)
- 一部の ESI がキャッシュから期限切れになるのを待っています
- HTTPS 経由でページを読み込んでいます (ここでエラーが発生します)
- HTTP 経由でページをロード中 (すべて OK)
また、手順 2 を HTTPS で実行し、手順 5 を HTTP で実行して、問題を強制することもできます。
したがって、この問題は元のページのプロトコルと一致しない ESI プロトコルに関連していると考えられます。誰かが以前にこの問題に遭遇したことがありますか、または診断/修正を助けることができますか?
信頼できるプロキシは 403 禁止エラーの最大の原因ですが127.0.0.1
、フロントエンド サーバーの IP アドレスを の信頼できるプロキシ リストに追加しましたapp/config/config.yml
。信頼できるプロキシのリストを削除すると、状況がさらに悪化することを確認できます。
magento - ESI ポリシーを使用して、Varnish を使用して Magento にログインしているユーザーをキャッシュする方法は?
私は Magento サイトを持っており、Varnish キャッシュを使用して最適化しています。
PageCache モジュール (Magento で動作する Varnish の FPC 拡張機能) をインストールして構成しましたが、ユーザーがログインしたときに、サイトをキャッシュできませんでした。
解決策は、モジュールにいくつかの ESI ポリシーを実装して、ログインしているユーザーで機能するようにすることです。どうやってやるの?できるだけ早くこの問題を解決する必要があります。どうもありがとう!
symfony - セキュリティ コンテキストには認証トークン ESI と Symfony2 が含まれていません
ESI (Edge Side includes) を使用してページを高速化していますが、ユーザーがログインしているかどうかを確認するたびに、次のエラーが発生します。
AuthenticationCredentialsNotFoundException: セキュリティ コンテキストに認証トークンが含まれていません。考えられる理由の 1 つは、この URL にファイアウォールが構成されていないことです。
私の config.yml ファイルには次のものがあります。
誰かがそれを解決する方法を知っていますか? /_proxy URL にファイアウォールを設定しようとしましたが、これは解決策ではないと思います。
これらは私のファイアウォールです:
ありがとう
symfony - 特定のルートの ESI キャッシュ
ワニスに動的メニューを別の状態でキャッシュさせるにはどうすればよいですか?
私の現在のプロジェクト (Symfony 2.8 に基づく) では、KnpMenuBundle
と ニスを使用してページをキャッシュしています。ESI
また、一部のページで 1 つの特定の要素のキャッシュを無効にするためにも利用されます。その中のメニューです。しかし、これはそれほど変化する要素ではないため、メニューのさまざまな状態をキャッシュして、現在メニューを呼び出しているページに関連する状態を渡すことができるかどうか疑問に思っていました。
関連する主なファイルは次のとおりです。
main.html.twig
AppBundle\Controller\MenuController.php
menu/main_menu_esi.html.twig
frontend - マイクロサービスのポリグロット フロントエンド
私はマイクロサービスが初めてです。私のプロジェクトでは、モノリス アプリケーションを小さなマイクロサービスに分割しようとしています。ポリグロット テクノロジを使用してバックエンド システムを実装するのはかなり簡単です。フロントエンドでも同じことが達成できますか?BFF (フロントエンドのバックエンド) は、マイクロサービスでフロントエンドを実装するための一般的なパターンのようです。しかし、それはフロントエンドのモノリスにはなりませんか? 私のBFFの理解は部分的/間違っているかもしれません。フロントエンドで多言語を実現するのに役立つ SSI (サーバー側インクルード) や ESI (エッジ側インクルード) などのオプションはほとんどありません。しかし、ポートレット テクノロジは 2000 年代初頭に同様のことを達成しようとしていたのではないでしょうか? ESI は、thinkworks テクノロジー レーダー (リンク) で試験段階にあります。これは正しい方向だと思いますか。アドバイスをいただければ幸いです。
symfony - publicCache に変換された symfony3 ESI privateCache
キャッシュに symfony リバース プロキシを使用しています。
私は2つのプライベートキャッシュを持っています。プライベートなオンライン ショップと考えることができます。アイテムのリストは、ユーザーの認証が必要なため、私の最初のプライベート キャッシュです。このコンポーネントは、ログに記録されたユーザーのみの動的データを含むため、私の 2 番目のプライベート キャッシュです。
AppKernel
config.yml
page.html.twig
PageController - IndexAction:
MenuController - DisplayMenuAction:
本番環境では、キャッシュヘッダーに表示されます
キャッシュ コントロール: 最大年齢 = 0、パブリック、s-maxage = 15
2 つのプライベート キャッシュがありますが、キャッシュ ヘッダーがパブリックとして送信されるのはなぜですか?
編集:
esi_render タグにコメントすると、ページのキャッシュは 3 分間非公開になります。(予想通り)
コマンドで他のリスナーがいないことを確認しましたbin/console debug:container --tag=kernel.event_subscriber