問題タブ [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.
symfony - Symfony2: ESI setMaxAge キャッシュ
アクションが小枝でレンダリングされるコントローラーがあります
{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}
アクション自体は次のようになります。
ブラウザをリロードすると、"myTime"
毎回変更されます。
setShardeMaxAge()
MaxAge の有効期限が切れた後にのみ Twig がレンダリングされるように、を使用するにはどうすればよいですか?
php - Symfony ESI キャッシュ/サロゲート リスナーの問題
ライブの Ubuntu 14.04 サーバーに展開した製品を持っていますapp_dev
。ただし、アプリで実行すると、アプリのログ ファイルに以下の 503 エラーが表示されます。
Vagrant セットアップ、同じ OS バージョンでまったく同じコードを取得しましたが、アプリとアプリの両方で正常に動作します。app_dev
誰もこれに遭遇したことがありますか?
Symfony 2.7.0 / Ubuntu 14.04 / Distro PHP / mySQL - キャッシュをクリアして、すべての composer パッケージを再インストールしようとしました。
[2015-06-09 16:36:43] request.INFO: 一致したルート「fos_user_security_login」。{"route_parameters":{"_controller":"FOS\UserBundle\Controller\SecurityController::loginAction","_route":"fos_user_security_login"},"request_uri":" http://xxxx/app.php/login "} []
[2015-06-09 16:36:43] security.INFO: TokenStorage に匿名トークンを入力しました。[] []
[2015-06-09 16:36:43] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Catchable Fatal Error: Argument 1 passed to Symfony\Component\HttpKernel\EventListener\SurrogateListener::__construct () は Symfony\Component\HttpKernel\HttpCache\SurrogateInterface のインスタンス、Symfony\Component\HttpKernel\HttpCache\Esi のインスタンスである必要があり、オンラインで /var/www/xxxx/app/cache/prod/appProdProjectContainer.php で呼び出されます557 and defined" at /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php line 33 {"exception":"[object] (Symfony\Component\Debug\Exception \ContextErrorException(コード: 0): キャッチ可能な致命的なエラー: 引数 1 が Symfony\Component\HttpKernel\EventListener\SurrogateListener に渡されました::__construct() は Symfony\Component\HttpKernel\HttpCache\SurrogateInterface のインスタンスである必要があり、指定された Symfony\Component\HttpKernel\HttpCache\Esi のインスタンスであり、/var/www/xxxx/app/cache/prod/appProdProjectContainer.php で呼び出されます。行 557 および /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php:33)"} [] で定義
(ログ行をフォーマットするコードを提案する人にとっては、それらを1行にフォーマットします。これは基本的に、それらをスクロールして読む必要があることを意味します。これは上記よりも悪いことです)。
php - Varnish ESI リクエスト -- 送信される Cookie は?
HTTP の新機能ではなく、varnish の新機能です。これが初心者/明白な領域である場合はお詫びしますが、グーグルについては答えが明らかにされていません。
デフォルトで送信される Cookie (およびその他の要求情報)
vcl
これは、構成ファイルを介してプログラムで制御できますか。
つまり、ワニスに含まれるesiのポイントは、キャッシュから取得されたページにステートフルな情報を入力できるようにすることであると私は理解しています。このステートフルな情報は、(おそらく) セッション ID を使用してアプリケーションによってフェッチされます。セッション ID は通常、Cookie で送信されるデータを介して実装されます。
私にははっきりしないのは、ワニスがただ通過するかどうかです
- 元のリクエストの Cookie 情報
- アプリケーションの応答Cookie
- 他の何か
また、デフォルトで渡されるワニスに関係なく、これをワニスvcl
ファイルで制御できますか?
(問題があればPHPアプリ)
varnish - ワニスでESIコンテンツを禁止/無効化できますか?
esi:include タグを使用してモジュールをインクルードするコンテンツ ページがあるので、
/content.html
含む
どちらの URL も、応答で cache-control ヘッダーを送信します。/content.html の場合は
Cache-Control: public, max-age=86400
/_esi/module.html の場合は
Cache-Control:public, max-age=3600
/content.html をロードすると、varnish からキャッシュされた応答を取得していることがわかります。また、module.html マークアップが適切に含まれていることがわかります。ただし、module.html を変更して禁止すると、次のようになりますban req.url == /_esi/module.html
。 :ban req.url ~ _esi
ブラウザのページはまだ変更されません。
これについては、ワニスのドキュメントではあまり見つけられないようです。含まれているコンテンツ (つまり、ESI URL からのフラグメント) を明示的に無効にすることはできますか? それとも、有効期限が切れるまで待つ必要がありますか?
また、これを実現するために PURGE を実装して使用しようとしましたが、そのインクルードから新しいコンテンツを取得できないようです。
php - ネストされた esi タグを機能させるにはどうすればよいですか?
Symfony と Varnish で ESI を使用しています。私がやろうとしていることは..
esi
ブロックを別のブロック内にレンダリングしesi
ます。
残念ながら、ネストされたesi
タグは置き換えられません。
理由はありますか?
varnish-vcl - キャッシュから esi タグを含むページを取得するときに、Varnish が ESI 要求を処理していませんか?
ページのフラグメントをキャッシュしないために ESI を使用しています。フラグメントをキャッシュしないように、vcl ファイルに次の構成を記述しました。
ニスがバックエンドからページ全体を初めて取得するとき、「/fragment」の個別のリクエストを送信し、ページの適切な場所に配置します。ただし、ページを更新すると、ワニスはメインページのみを再要求し、キャッシュでそれを見つけます。次に、このページでesiフラグメントを検索せず、リクエストを送信しません。代わりに、メイン ページのキャッシュ中にメイン ページ自体に格納され、ルックアップ中にそこから取得されます。メインページの残りのコンテンツをキャッシュから提供しながら、メインページのリクエストが行われるたびに、バックエンドからフラグメントを取得する方法を知りたいです。
c# - c# mvc と Varnish でドーナツ キャッシングを行うには?
ワニス構成に追加しました
}
私のmvcアプリケーションでは、childactionがあります
Requestヘッダーを追加しました
しかし、Varnish はページ全体をキャッシュし続けます。
何が恋しいですか?ブラウザでリクエスト ヘッダー X-Esi が存在しないことに気付きました。また、ワニスはタグを適切に削除します<esi:include
アクション GetHour のコードは非常に単純で、SQL Server から 10 進数を取得するだけです。
html - esi:include src を html ページの esi 変数として使用できますか
例:
akamai cdn を介してレンダリングされた html ページの esi:assign および esi:include に関する問題
symfony - Symfony 2.7 _fragment にアクセスするには?
何時間も検索した後、この問題に対する答えが見つからなかったと思うので、ここでこの質問をします。
問題は非常に単純です。twig の render_esi 関数で正常に動作する twig の外部の _fragment にアクセスしようとしています。
config.yml で信頼できるプロキシ エントリを無効にしました。
そして、security.yml に次のように記述します。
Web ブラウザー経由でフラグメントにアクセスしようとすると、プロファイラーに「ログインしていません」というメッセージで AccessDenied Exception が発生しました。
これの問題は何ですか?なぜプロファイラーは私がログインしていないと言っているのですか?
最後のエラー ログは次のとおりです。
ありがとうございました