web-dev-qa-db-ja.com

特定の役割のみを持つログインユーザーのキャッシュを無視するようにnginxを設定することは可能ですか?

私はログインしたユーザーを無視するnginxキャッシング設定を持っています、しかし私はほとんどキャッシュされたサイトにサービスを提供されるべきである加入者ロールの多くのユーザーを持っています。加入者(およびある時点で他の役割)に対してキャッシュをオンにしたままで、SOME役割(貢献者以上)のキャ​​ッシュのみを無視する方法はありますか?

1
Stephen

これが私がやってしまったものです:

// Set disable cache for certain roles
add_action('init', 'add_custom_cookie_admin');
function add_custom_cookie_admin() {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$thisrole = $current_user->roles[0];
  if($thisrole !== 'subscriber') {
    setcookie("disable_cache", $current_user->user_login, time()+43200, COOKIEPATH, COOKIE_DOMAIN);
  }
  }
}
// and then remove the cookie on logout
function clear_custom_cookie_on_logout() {
    unset($_COOKIE["disable_cache"]);
    setcookie( "disable_cache", '', time() - ( 15 * 60 ) );
}
add_action('wp_logout', 'clear_custom_cookie_on_logout');

それから私はこれを私のnginxキャッシュに追加しました:

if ($http_cookie ~* "disable_cache") {
set $skip_cache 1;
}
1
Stephen