# Comment utiliser la mise en cache avec HBook ?

L'utilisation d'un plugin de cache WordPress ou des plugins de cache intégrés à votre hébergement nécessite des ajustements pour fonctionner correctement avec HBook. Deux aspects sont concernés : 

- la mise en cache des URL de calendrier HBook iCal : il est important que ces URL ne soient pas mises en cache afin que ce soit toujours un calendrier à jour qui soit renvoyé lorsque des plateformes externes (AirBnb, Booking.com, etc.) appellent les URL de votre calendrier HBook iCal.
- les calendriers affichés sur votre site internet, qu'il s'agisse du "calendrier des disponibilités" (\[hb\_availability\] shortcode ou block) ou du sélecteur de date du formulaire de réservation (\[hb\_booking\_form\] shortcode ou block). Vous souhaitez toujours afficher la disponibilité exacte dans vos calendriers HBook frontaux.

En fonction de la structure de votre site internet et de l'outil de mise en cache qui est en place sur votre site internet, nous recommandons d'implémenter les éléments suivants : 

- Excluez du cache les URL qui ne doivent pas être mises en cache. Vous devez exclure les URLs des pages où vous avez un calendrier de disponibilité HBook. Cette option est la plus simple et convient si vous n'avez pas de calendriers HBook sur de nombreuses pages de votre site internet.
- utiliser une fonction de votre outil de mise en cache pour vider le cache chaque fois qu'une réservation a été reçue ou modifiée et chaque fois qu'une date bloquée a été ajoutée. Cette option est plus appropriée si vous avez de nombreuses pages sur votre site internet qui affichent des calendriers HBook. C'est également la meilleure façon de procéder pour les URLs des calendriers HBook iCal, puisque tous les outils de mise en cache ne permettent pas d'avoir un paramètre de requête dans leurs réglages pour exclure les URLs du cache.

Vous pouvez utiliser nos filtres pour exécuter la fonction qui effacera le cache à chaque fois qu'une réservation est reçue ou mise à jour. Les filtres à utiliser sont "hb\_reservations\_updated" et "hb\_blocked\_accom\_updated".   

> [!INFO]
> Pour une liste de tous les filtres HBook, veuillez consulter [cette page](https://maestrel.atlassian.net/wiki/x/7QWGAg).

Vous trouverez ci-dessous quelques exemples d'outils de mise en cache populaires :

<a id="litespeed-référence-de-la-documentationhttps-docslitespeedtechcom"></a>

### LiteSpeed [(référence de la documentation)](https://docs.litespeedtech.com)

- Exclure "feed" du cache dans **"Do not cache query strings"** dans les paramètres "Exclude" pour le cache.
- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
  do_action( 'litespeed_purge_all' );
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

<a id="sg-optimizer-supercache"></a>

### SG Optimizer SuperCache

- Vous pouvez consulter la section "Exclude URLs from Caching" de la page [cet article](https://www.siteground.com/tutorials/wordpress/sg-optimizer/supercacher/) du cache de SG Optimizer pour exclure des pages. Voici comment le paramétrer :

![caching_speed_optimizer.png](./attachments/caching_speed_optimizer.png)

- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if (function_exists('sg_cachepress_purge_cache')) {
      sg_cachepress_purge_cache();
    }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

  
 

<a id="wpfastest-cache-référence-de-la-documentationhttps-wwwwpfastestcachecom-tutorial-delete-the-cache-by-calling-the-function"></a>

### WPFastest Cache ([référence de la documentation)](https://www.wpfastestcache.com/tutorial/delete-the-cache-by-calling-the-function))

- Vous pouvez vérifier [cet article](https://www.wpfastestcache.com/features/exclude-page) du cache WPFastest pour exclure des pages.
- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if ( function_exists( 'wpfc_clear_all_cache' ) ) {
        wpfc_clear_all_cache();
    }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

<a id="wprocket"></a>

### WPRocket

- Vous pouvez vérifier [cet article](https://docs.wp-rocket.me/article/54-exclude-pages-from-the-cache) de WPRocket pour exclure des pages.
- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if ( function_exists( 'rocket_clean_domain' ) ) {
        rocket_clean_domain();
    }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

<a id="wp-super-cache"></a>

### **WP Super Cache**

- Vous pouvez vérifier [cet article](https://odd.blog/wp-super-cache-developers/) de WP Super Cache pour exclure des pages.
- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if ( function_exists( 'wp_cache_clear_cache' ) ) {
        wp_cache_clear_cache();
     }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

<a id="wp-optimize"></a>

### **WP Optimize**

- Vous pouvez vérifier [cet article](https://getwpo.com/documentation/#advanced-settings-exclude-urls) de WP Optimize pour exclure des pages.
- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if ( function_exists( 'get_page_cache' ) ) {
        WP_Optimize()->get_page_cache()->purge();
    }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' );
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

<a id="w3-total-cache"></a>

### W3 Total Cache

- Vous pouvez vérifier [cet article](https://www.redbridgenet.com/how-to-exclude-specific-pages-from-w3-total-cache/) de W3 Total Cache pour exclure des pages. C'est ici que vous ajouterez les URL que vous souhaitez exclure.

![w3-cache-exclude-url.png](./attachments/w3-cache-exclude-url.png)

- Utiliser une fonction - Ajoutez ce code dans le fichier functions.php de votre thème enfant :

```
function my_custom_flush_cache() {
    if ( defined( 'W3TC' ) ) {
        $w3_plugin_totalcache->flush_all();
    }
}

add_filter( 'hb_reservations_updated', 'my_custom_flush_cache' ); 
add_filter( 'hb_blocked_accom_updated', 'my_custom_flush_cache' );
```

Si vous ne savez pas si l'extension de cache que vous souhaitez utiliser dispose de cette fonction pour vider le cache, vous pouvez consulter sa documentation ou contacter son équipe de support. N'hésitez pas à nous contacter si nécessaire.