Reescriba la URL sin conexión cuando use un trabajador de servicio

Estoy creando una aplicación web con capacidades fuera de línea utilizando un trabajador de servicio generado por un complemento de Nodejs llamado sw-precache . Todo funciona bien y tengo acceso a los archivos html o imágenes sin conexión.

Pero entonces, como no es posible un lenguaje del lado del servidor, ¿hay una manera de volver a escribir el lado del cliente url como lo haría un archivo .htaccess ? ¿Te gusta mostrar una página “404 Página no encontrada” cuando ningún archivo coincide con la URL? Sé que las redirecciones son posibles usando Javascript o metatags, ¿pero reescribiendo la url?

De forma predeterminada, sw-precache solo responderá a los eventos de fetch cuando la URL solicitada sea una URL para un recurso que ha almacenado en caché. Si alguien navega a una URL para una página web que no existe, sw-precache no responderá al evento fetch .

Eso significa que tiene la oportunidad de ejecutar su propio código en un controlador de eventos de fetch adicional que podría implementar un comportamiento personalizado, como devolver una página 404.html cuando un usuario navega a una página inexistente mientras está desconectado. Necesitas saltar a través de un par de aros, pero aquí hay cómo hacerlo:

 // In custom-offline-import.js: self.addEventListener('fetch', event => { if (event.request.mode === 'navigate') { event.respondWith( fetch(event.request) .catch(() => caches.match('404.html', {ignoreSearch: true})) // {ignoreSearch: true} is needed, since sw-precache appends a search // parameter with versioning information. ); } }); // In your sw-precache config: { // Make sure 404.html is picked up in one of the glob patterns: staticFileGlobs: ['404.html'], // See https://github.com/GoogleChrome/sw-precache#importscripts-arraystring importScripts: ['custom-offline-import.js'], } 

Esto no debería interferir con nada de lo que está haciendo sw-precache , ya que solo se usará como respaldo.

    Intereting Posts