J'utilise le plug-in Offline Content de Mozilla pour implémenter les fonctionnalités hors connexion de mon site et je suis plutôt satisfait, mais il existe des options de précaching en ligne. comprend les pages. Mon contenu le plus important, mes guides, sont dans les messages.
Le plugin Mozilla semble abandonné, alors je me suis dit que j'en ferais une version modifiée pour mon usage personnel. J'ai trouvé le code dans lequel Offline Content récupère les pages et les transmet au cache de Serviceworker ici:
private function get_precache_list() {
$precache_options = $this->options->get('offline_precache');
$precache_list = array();
if ($precache_options['pages']) {
foreach (get_pages() as $page) {
$precache_list[get_page_link($page)] = $page->post_modified;
}
}
return $precache_list;
}
J'ai ajouté ce qui suit dans l'espoir de mettre en cache mes publications avec le tag Guides
$args = array( 'category_name' => 'Guides', 'numberposts'=> 10 );
foreach (get_posts( $args ) as $page) {
$precache_list[get_page_link($page)] = $page->post_modified;
}
Il semble que les pages soient chargées lors de l’installation du serviceworker; Je les vois être appelés dans l’onglet Réseau avec le statut 200. Mais si je passe hors connexion et que je navigue vers les publications qui ont été chargées, elles ne fonctionnent pas (les messages d'erreur relatifs aux navigateurs hors connexion standard), tandis que les pages préchargées fonctionnent.
J'admets que je ne suis pas tout à fait sûr que le problème réside dans la manière dont je récupère le contenu Wordpress ou ServiceWorker, mais la seule différence entre le contenu actif et le contenu non fonctionnel semble être le fait qu'ils sont des publications et non des pages. Dois-je mettre en cache du contenu de manière différente pour que ces messages fonctionnent?
J'ai été assez surpris de constater qu'il ne semble y avoir pratiquement aucune autre implémentation de ServiceWorker dans la bibliothèque de plug-ins. S'il existe un plug-in existant qui le fera pour moi, je suis simplement ouvert à cela. J'aimerais simplement pouvoir les mettre en cache dans ServiceWorker sans avoir à changer la façon dont je poste les articles; Bien que Pages cache correctement, il n’ya aucune raison de republier ce contenu en tant que Page simplement pour le mettre en cache.
Pas tout à fait la solution à laquelle je m'attendais, mais j'ai trouvé un autre plugin qui gère beaucoup mieux Service Worker et ajoute les fonctionnalités dont j'avais besoin, même si je dois répertorier les publications manuellement plutôt que par programme.
Le meilleur plugin est au-dessus de l'optimisation du pli (ignorez les critiques 1 étoile, il s'agit d'un de ces plugins dans lequel, si vous l'utilisez mal, cela cassera votre site certainement pas recommandé pour les amateurs cependant). ServiceWorker en option que vous pouvez installer, y compris la mise en cache préalable et bien plus d'options que le plugin apparemment abandonné de Mozilla. Je trouve même plus utile et plus rapide qu'Autoptimize de différer mon CSS/Javascript de manière plus conviviale pour le cache.
Je ne suis toujours pas tout à fait sûr de savoir pourquoi ma première tentative avec l'autre implémentation de ServiceWorker ne fonctionnait pas, mais pour l'instant, cela correspond en fait à mes critères de mise en cache de publications spécifiques.