it-swarm.com.de

Kann nginx so konfiguriert werden, dass der Cache nur für angemeldete Benutzer in bestimmten Rollen ignoriert wird?

Ich habe ein Nginx-Caching-Setup, das angemeldete Benutzer ignoriert, aber ich habe viele Benutzer in Abonnentenrollen, denen SOLLTE ein größtenteils zwischengespeicherter Standort bereitgestellt werden. Gibt es eine Möglichkeit, die Zwischenspeicherung nur für einige Rollen (wie Contributor und höher) zu ignorieren, während die Zwischenspeicherung für Abonnenten (und möglicherweise auch für andere Rollen) aktiviert bleibt?

1
Stephen

Folgendes habe ich letztendlich getan:

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

Und dann habe ich dies zu meinem Nginx-Cache hinzugefügt:

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