web-dev-qa-db-ja.com

hook_bootとワニス

Hook_boot()を実装するモジュールがあり、ユーザーがホームページにアクセスするかどうか、およびユーザーが特定のCookieを持っていないかどうかを確認します。両方の検証が真の場合、ユーザーを/ welcomeページにリダイレクトしてCookieを設定します。したがって、ユーザーが2回目にホームページにアクセスしようとすると、ユーザーがCookieを持っていることがわかり、リダイレクトされません。

最近、自分のサイトにVarnishをインストールしましたが、ホームページにアクセスしようとすると、/ welcomeページにアクセスします。スキップすることはありません。

よくわかりませんが、初めてホームページにアクセスしたとき、まだCookieがない場合は、ホームページがキャッシュされ、/ welcome pageが表示され、Cookieが設定されます。次に、2回目にホームにアクセスしようとすると、キャッシュされたページ(Cookieがないと思われる)が取得され、Cookieがある場合でも、/ welcomeページに再度リダイレクトされます。

ホームページをキャッシュしないようにしましたが、機能しませんでした。

何かご意見は?

1
user1672258

Varnishを使用する場合、匿名ユーザーの場合はPHPコードはまったく実行されません)、静的HTMLのみを取得することを考慮する必要があります。

あなたの場合の解決策は次のようになります:

  1. ウェルカムページで、PHPではなくJavaScriptでCookieを設定します。
  2. Varnish vclスクリプトを使用して、ユーザーがホームページをロードし、Cookieを持っているかどうかを確認します。そうでない場合は、ウェルカムページにリダイレクトします。

これで、アイテム#2はPHPコードで作成されますが、Varnishを使用して書き直す必要があります。JavaScriptを使用してアイテム#2を作成することもできますが、動作がはるかに遅くなり、ユーザーにはブラウザーのリダイレクトが表示されます。

2
Eugene Fidelin