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.

Laravel: Caché de imágenes externas.

¿Hay alguna forma de almacenar en caché las imágenes externas que son llamadas por un servicio web?

Por ejemplo:

$product_image = 'https://webservice.com/DOC/GetDoc.aspx?accesskey=XXX&filename=168724.jpg';
<img src="{{ $product_image }}" width="90" alt="" />
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible almacenar en caché las imágenes externas que son llamadas por un webservice en Laravel. Una forma de hacerlo es utilizando el sistema de caché de Laravel.

    En primer lugar, deberías establecer una clave para la URL de la imagen. Esta clave se utilizará para recuperar la versión en caché de la imagen, si existe.

    // Establecer una clave para la URL de la imagen
    $key = 'imagen_producto_' . md5($imagen_producto);
    

    A continuación, debes comprobar si la imagen ya está en caché. Si lo está, se devolverá la versión en caché. Si no lo está, la imagen se obtendrá del webservice y se almacenará en caché durante un período de tiempo determinado (en segundos).

    // Comprobar si la imagen ya está en caché
    if (Cache::has($key)) {
        // Recuperar la imagen en caché
        $img = Cache::get($key);
    } else {
        // Obtener la imagen del webservice
        $img = file_get_contents($imagen_producto);
    
        // Almacenar la imagen en caché durante 1 hora (3600 segundos)
        Cache::put($key, $img, 3600);
    }
    
    // Mostrar la imagen
    echo '<img src="data:image/jpeg;base64,' . base64_encode($img) . '" width="90" alt="">';
    

    En el ejemplo anterior, la imagen se convierte al formato base64 antes de mostrarse en HTML. Esto se debe a que la imagen se obtiene y almacena en caché en el servidor, pero queremos mostrarla en el navegador del cliente. Convertir la imagen a base64 nos permite incrustarla directamente en el HTML, sin necesidad de obtenerla nuevamente desde el servidor.

    Nota: El código anterior es solo un ejemplo y deberá adaptarse a tu caso de uso específico. También es importante tener en cuenta que almacenar en caché imágenes externas puede tener implicaciones legales o éticas, por lo que debes asegurarte de tener permiso para hacerlo.

Comments are closed.