問題タブ [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.
varnish - ワニスに動的コンテンツをキャッシュする方法は?
私はRoRアプリに取り組んでいます。売り切れ商品にttlを設定したい。sold_out_status 関数は、売り切れの製品の productIds を返し、次のように定義されます。
製品をワニスにキャッシュして、売り切れの製品の ttl を設定する方法はありますか? いくつかの調査では、ESI が良いアイデアである可能性があることが示されました。しかし、これを実装するために従うことができる詳細なドキュメントが見つかりませんでした。また、varnish で sold_out_status の出力にアクセスするにはどうすればよいですか?
編集:ページ上の完売した製品は、リクエスト URL をたどることで見つけることができます。この URL に対応するページには、テキストとしてレンダリングされた完売した製品の ID が含まれています。
php - Varnish ESI & Wordpress - 投稿のロードをシミュレート
更新:私はこれに自分で答えました。下記参照。
set_the_id()
関数が存在する場合、関数に相当するものを求めていると思います。
パフォーマンスのために Wordpress と Varnish を使用しており、サイドバーに ESI (Edge Side Include) を使用したいので、最近の投稿や人気のある投稿などを、投稿のコンテンツ自体よりも頻繁に更新できます。
これを行う 1 つの方法は、次のようなコードを使用して、Varnish が ESI コメントからアクセスできるように、プラグイン ディレクトリなどにエンドポイントを作成することです。
これまでのところすべて問題ありません。これは、Wordpress をロードし、関連するすべてのプラグインを見つけるのに十分です。ただし、 get_the_id()、in_category()、投稿オブジェクトのプロパティなどを使用して特定の投稿などを強調表示する必要があり、投稿がまだ読み込まれていないため、さまざまなポイント (具体的wp-includes/post-template.php
には 29 行目)でエラーが発生します。
のような URL にアクセスしたかのように、上記のコードで特定の投稿 ID をロードするように Wordpress に指示するにはどうすればよいhttp://example.com?p=1
ですか? 投稿がアクティブであるかのように環境を設定したいだけで、ESI 呼び出しで現在の投稿 ID をパラメーターとして渡すことができます。
query_posts()が役立つかもしれないと思ったので、追加してみました:
しかし、それは何もしません。
私も疑問に思いましたWP_Post::get_instance()
(投稿IDではなく、オブジェクトのみを受け取るようです)。
他に使えるものはありますか?