Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

205
Vistas
¿Cómo obtener axios-cache-adapter para almacenar en caché las descargas de archivos con el blob de tipo de respuesta?

Por alguna razón axios-cache-adapter no almacena en caché las solicitudes GET para descargas de archivos, lo que creo que se debe a la configuración de responseType: 'blob' (ya que no tengo problemas de almacenamiento en caché en otras solicitudes que no requieren que este campo se establezca como such) que se requiere para que axios genere la url src (según esta respuesta ):

src: URL.createObjectURL(nuevo blob([respuesta.datos])),

La configuración de mi adaptador es la siguiente:

 // set axios defaults axios.defaults.headers.common = { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }; const configureAxios = async () => { await localforage.defineDriver(memoryDriver); const forageStore = localforage.createInstance({ driver: [ localforage.INDEXEDDB, localforage.LOCALSTORAGE, memoryDriver._driver ], name: 'my-cache' }); return setup({ // `axios-cache-adapter` options cache: { maxAge: 15 * 60 * 1000, exclude: { query: false }, store: forageStore, } }); }; // call this function in JSX Component to download file export const downloadFile = async (fileId) => { const api = await configureAxios(); const response = await api.get(`api/download/${fileId}`, { responseType: 'blob', }); return response.data; // returns file data };

Su ayuda sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

@D-Money me indicó la dirección correcta. Entonces, básicamente axios-cache-adapter v3 soluciona el problema de no almacenar en caché las solicitudes con responseType blob o arraybuffers , sin embargo, actualmente solo está disponible en versión beta, por lo que tendrá que instalarlo de la siguiente manera en el ínterin:

npm install axios-cache-adapter@beta

Luego, tendrá que hacer un ligero ajuste configurando readHeaders: false, en las axios-cache-adapter en setup y, además, mover la configuración predeterminada de axios directamente a setup , lo que en mi caso da como resultado los siguientes cambios netos:

 const configureAxios = async () => { await localforage.defineDriver(memoryDriver); const forageStore = localforage.createInstance({ driver: [ localforage.INDEXEDDB, localforage.LOCALSTORAGE, memoryDriver._driver ], name: 'my-cache' }); return setup({ // Options passed to `axios.create()` method headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, // `axios-cache-adapter` options cache: { readHeaders: false, maxAge: 15 * 60 * 1000, exclude: { query: false }, store: forageStore, } }); }; // call this function in JSX Component to download file export const downloadFile = async (fileId) => { const api = await configureAxios(); const response = await api.get(`api/download/${fileId}`, { responseType: 'blob', }); return response.data; // returns file data };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda