Symfony 3 - изображения не обновляются мгновенно

1

В настоящее время работает над приложением Symfony 3. Я создал службу, которая позволяет пользователям загружать изображение, затем выбирать раздел кадрирования и, наконец, сохраняет аватар с определенной высотой и шириной. Аватары сохраняются в папке /web/img/uploads/avatar/. Я использую идентификатор пользователя для имени файла. Таким образом, у пользователя с идентификатором 13 будет сохранен аватар на /web/img/uploads/avatar/13.png.

Моя проблема заключается в том, что когда пользователь обновляет свой аватар, файл правильно заменяется в папке, но на фактическом веб-сайте отображаемый аватар остается старым. В среде dev это занимает примерно несколько минут, прежде чем новый аватар заменит старый. Даже если я localhost/app_dev.php/img/uploads/avatar/xxx.png к URL-адресу аватара (localhost/app_dev.php/img/uploads/avatar/xxx.png), я до сих пор вижу старый аватар, прежде чем он будет заменен новым. Тхо, аватар в файловой системе мгновенно заменяется, как и ожидалось.

Я решил, что это может произойти из кеша. Я попытался найти решения в google, но все, что я нашел, было связано с LiipImagineBundle и его менеджером кэша, но я не использую этот пакет...

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

if(file_exists($dst)) {
    unlink($dst);
}

Но это не сработает. Вообще.

Есть идеи?

  • 0
    это просто кеш браузера
  • 0
    И на самом деле я ничего не могу с этим поделать, кроме как сказать своим пользователям: «Эй, ты изменил свой аватар, это здорово, теперь подожди некоторое время, пока твой браузер в конце концов решит обновить свой кеш, и ты увидишь свою совершенно новую картинку». ? Или просто рандомизируйте имена изображений, которые я предполагаю, чтобы URL менялся, так как он будет получать новый каждый раз, когда пользователь загружает новый аватар.
Показать ещё 3 комментария
Теги:
file
image
caching

1 ответ

2
Лучший ответ

Это, безусловно, кеш браузера, как сказано в bxN5. Но я не согласен с изменением заголовков. Если вы решите управлять этим путем изменения заголовков кеша, это заставит вас навсегда удалить кеш на этих изображениях или позволить веб-браузерам спросить ваш сервер, были ли эти изображения изменены (меньше загруженных байтов, но дополнительный запрос при каждом вызове).

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

  • 0
    Да, я просто буду использовать случайные имена, это самый простой вариант.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню