Кеш изображений Laravel с использованием Dropbox в качестве диска - PullRequest
1 голос
/ 30 мая 2019

Я использую этот пакет (https://github.com/spatie/flysystem-dropbox) для хранения и получения изображений из Dropbox.

Это работает нормально, но изображения должны загружаться при каждом обновлении страницы. Интересно, знаете ли вы какое-либо решение для кэширования изображений, которое работает в этом случае, и если можете, приведите минимальный рабочий пример.

Спасибо.

1 Ответ

1 голос
/ 10 июня 2019

Один из способов решить эту проблему - создать собственную систему кэширования.Если изображение не существует в вашей локальной файловой системе, извлеките его из Dropbox, а затем сохраните его в локальной файловой системе и обслужите.Если он уже существует в локальной файловой системе, просто отправьте его из локальной файловой системы.

1 Маршрут

Служит изображениям по их собственному маршруту.

Route::get('images/{filename}', [
    'uses'    => 'ImageController@getImage'
]);

2 Контроллер

Проверьте локальную файловую систему, чтобы убедиться, что файл уже существуетсуществует, в противном случае вытащите его из Dropbox и сохраните в локальной файловой системе.

<?php 

namespace App\Http\Controllers;

class ImageController extends Controller 

    public function __construct()
    {
        parent::__construct();
    }

    public function getImage($filename)
    {
        // If the file doesn't exist
        if(!file_exists('/path/to/' . $filename)) {

            // 1. Get the image from dropbox

            // 2. Save the image to local storage
        }

        // 3. Serve the image from local storage
    }
}
...