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é)?
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;
}