Браузер отображает кэшированную копию изображения (PHP сгенерировано) в Laravel - PullRequest
0 голосов
/ 09 апреля 2020

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

Я установил маршрут для отображения изображения. Он в основном пытается получить URL из моего пространства digitalocean (S3 bucket), а затем отображает его. Проблема заключается в том, что браузер не знает, что нужно использовать кэшированную копию, даже если были установлены правильные заголовки кэша.

Вот фрагмент кода, который «передает» файл:

                $disk = 'do_spaces';
                $url = Storage::disk($disk)->url($directory.'/'.$fileName);

                $secondsToCache = 86400;
                $ts = gmdate("D, d M Y H:i:s", time() + $secondsToCache) . " GMT";
                $lm = gmdate("D, d M Y H:i:s", time()) . " GMT";

                return response()->stream(function () use ($url) {
                    return readfile($url);
                },200, [
                    //'status' => 304,
                    'Content-Type' => $mimeType,
                    'Pragma' => 'cache', //cache or no-cache
                    'Expires' => $ts, //set expiration date
                    'Last-Modified' => $lm,
                    'Cache-Control' => 'max-age='.$secondsToCache //"no-cache, must-revalidate, no-store, max-age=0, private",
                ]);

Всякий раз, когда я получаю прямой доступ к изображению, оно использует кэшированную копию при refre sh. Когда я получаю доступ к своему маршруту (изображение через php), он НЕ кешируется.

Я пытался проверить $_SERVER['HTTP_IF_MODIFIED_SINCE'], но когда я печатаю доступные переменные $ _SERVER, он никогда не появляется, поэтому я не могу просто отправьте ответ 304, чтобы сообщить браузеру использовать кэшированную копию.

Почему бы мне просто не дать прямую ссылку на изображение? В основном потому, что я хочу, чтобы URL-адреса изображений были направлены на мой сайт, а не URL-адреса digitalocean (конечно, если использование php для доставки изображений создает слишком много накладных расходов, я могу переключиться на прямые URL-адреса, но для меня это последнее средство).

Ценю любые идеи или предложения, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...