Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
¿Hay alguna manera de obligar al navegador a extraer una URL del caché si está disponible? Alternativamente, ¿hay alguna forma de "reciclar" la URL de src para HTMLAudio?

Entonces... estoy desarrollando una aplicación web... básicamente necesito pedirle a mi backend un mp3 a través de una solicitud de obtención (no se puede almacenar en caché ya que se actualiza con frecuencia, de hecho, este código es parte de un componente de carga para cambiar eso) y luego necesito repetirlo indefinidamente.

Si intenta hacer un bucle con el elemento de audio HTML, no se repite sin problemas... así que encontré un código que básicamente crea dos componentes de audio HTML y se encarga de reproducirlo sin problemas al reproducirlos simultáneamente y hacer malabarismos entre el volumen de los dos. ..

Funciona perfectamente, PERO, quiero optimizar esto... Actualmente le estoy pidiendo al backend el mismo archivo tres veces... una vez para un componente de audio de búfer (solo necesito la duración de esto, ya que no puede se guardará en el backend actualmente) y dos veces para cada HTMLAudio dentro del código SeamlessLoop que encontré.

Este problema incluso se ve acentuado por el hecho de que tengo 5 de esos bucles que necesito cargar cada vez.

 //I removed part of the code to make it more digestable loadAudio() { for (let i = 1; i <= 5; i++) { let url = this.audio.tracks[i] let audio = new Audio() audio.src = url audio.load audio.addEventListener('loadedmetadata', () => { this.loops[`lvl${i}`] = new SeamlessLoop() //SeamlessLoop.addUri is basically how you inizialize this class //inside it creates two Audio elements and everything else it needs //addUri(src: string, duration: number, name: string) this.loops[`lvl${i}`].addUri(url, audio.duration*1000, 'loop') }) } }

Ahora, ya tengo un montón de soluciones ...

  • Podría almacenar la duración del archivo cada vez que se cambia en la base de datos, por lo que solo podría descargar el archivo una vez (configurando el caché en 5 segundos o algo así en el backend)
  • Alternativamente, podría almacenar en caché los archivos desde el backend a un horario regular y simplemente cambiar el nombre del archivo cada vez que se carga uno nuevo.

Preferiría evitar ambas soluciones, ya que ambas requerirían una reestructuración del backend que podría no valer la pena...

Por lo tanto, aquí está mi pregunta:

¿Hay alguna manera de forzar que el navegador cargue una URL desde la memoria caché? Algo así como agregar un # después de una URL para forzarlo a descargarlo de nuevo en lugar de extraerlo de la memoria caché, pero al contrario... Si eso es una cosa, resolvería mi problema al instante.

Segunda pregunta, en caso de que la respuesta a la primera sea no:

¿Hay alguna forma de inicializar un nuevo Audio() usando como src otro Audio que ya haya descargado el archivo?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

como lo sugiere @Terry,

No creo que haya una manera de hacer eso como sugerí.

Sin embargo, investigué la API de audio web y funcionó de maravilla (incluido un bucle continuo listo para usar)

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!