web-dev-qa-db-fra.com

Possible de configurer nginx pour ignorer le cache pour les utilisateurs connectés dans certains rôles uniquement?

La configuration de la mise en cache de nginx ignore les utilisateurs connectés, mais de nombreux utilisateurs occupant des rôles d’abonné se voient attribuer un site principalement mis en cache. Existe-t-il un moyen d'ignorer la mise en cache de CERTAINS rôles (comme contributeur et supérieur) tout en laissant la mise en cache pour les abonnés (et éventuellement d'autres rôles à un moment donné)?

1
Stephen

Voici ce que j'ai fini par faire:

// 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');

Et puis j'ai ajouté ceci à mon cache nginx:

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