es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar por completo una Aplicación Web Progresiva.

No tengo idea de cómo funcionan las aplicaciones PWA. Sin embargo, tengo buen conocimiento de front-end y Javascript. Tengo un cliente cuyo sitio actual es una PWA hecha con Workbox. Ahora tengo que rediseñar ese sitio para el cliente.

Cuando publique el nuevo sitio, todos los nuevos visitantes verán el nuevo diseño del sitio. Pero los visitantes antiguos, que ya habían visitado el sitio en el pasado, seguirán viendo el antiguo sitio.

Tampoco tengo acceso al código del sitio PWA. Lo único que tengo es acceso al dominio, con el cual puedo apuntar el dominio al nuevo servidor con el nuevo diseño.

¿Puede algún experto en PWA o Workbox ayudarme con este escenario? ¿Existe alguna forma de forzar al navegador de los usuarios antiguos a que apunte al nuevo servidor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en PWA y Workbox, sugiero implementar una estrategia de expiración de caché en el mecanismo de caché del service worker utilizado por el sitio anterior. Esto se puede hacer agregando una nueva revisión al archivo del service worker, lo que invalidará efectivamente los archivos en caché antiguos y obligará al navegador a buscar nuevos archivos en el servidor.

    Aquí te explico cómo hacerlo:

    1. Primero, accede al archivo del service worker del dominio en el lado del servidor. Si no tienes acceso al código, pídele al cliente que te lo proporcione.
    2. En la parte superior del archivo del service worker, agrega un nuevo número de revisión, así:

      const revision = 'v2';
      

    3. A continuación, actualiza las secciones “precache” y “runtimeCache” para incluir el nuevo número de revisión de la siguiente manera:
      workbox.precaching.precacheAndRoute([
       {
         url: '/',
         revision: revision
       },
       {
         url: '/index.html',
         revision: revision
       },
       // más archivos para cachear
      ]);
      
      workbox.routing.registerRoute(
       /\.(?:png|gif|jpg|jpeg|svg)$/,
       workbox.strategies.cacheFirst({
         cacheName: 'images',
         plugins: [
           new workbox.expiration.Plugin({
             maxEntries: 60,
             maxAgeSeconds: 30 * 24 * 60 * 60,
             // Actualiza el tiempo de expiración de la caché cuando cambia el número de revisión
             revision: revision
           })
         ]
       })
      );
      
    4. Por último, implementa el archivo actualizado del service worker en el servidor y dirige el dominio al nuevo servidor con el nuevo diseño.

    Esto debería obligar a los navegadores de los visitantes antiguos a buscar los nuevos archivos en el servidor en lugar de utilizar los archivos en caché antiguos. Ten en cuenta que esto puede llevar algún tiempo para que todos los visitantes reciban los archivos actualizados, según el tiempo que los navegadores almacenen en caché los archivos antiguos.

Comments are closed.