вот что у меня есть:Symfony2: набор Last-Modified в RedirectResponse
я получил маршрут, где я называю обслуживание, чтобы повернуть данное изображение.
/**
* @Route("/media/rotate/{id}", name="rotate_image")
*
* @ParamConverter(name="media", class="RA\MediaBundle\Entity\Media")
*
* @param Media $media
*
* @return RedirectResponse
*/
public function rotateImage(Media $media)
{
$this->get('ra.image.rotator.service')->rotateImage($media, 90);
// do the redirect
}
и вот что я хотел бы сделать:
ли редирект на маршруте я пришел из (с помощью реферера). Это работает, но после перенаправления повернутое изображение не отображается, поскольку оно кэшируется.
Поэтому я думал, что установка «Last-Modified» в заголовке текущего DateTime заставит браузер перезагрузить изображение. Я попытался сделать это следующим образом:
if ($referer = $request->headers->get('referer')) {
$response = new RedirectResponse($referer);
$response->setLastModified(new \DateTime());
return $response;
}
Но, к сожалению, «Last-Modified» только набор в заголовке rotate_image маршрута, а не в той, которую я получил перенаправлены.
Любая идея, как решить эту проблему?
Edit:
Я «решена» мой вопрос, просто добавив параметр версии к URLs СМИ, как это:
return $mediaUrl . '?v=' . md5($media->getUpdatedAt()->format('Y-m-d H:i:s'));
Таким образом, после поворота изображения я обновляю СМИ чтобы версия изменилась, и будет показано «новое» изображение.
Что касается сохранения в кеше повернутого изображения? :) – mmmm
@mmmm извините, я действительно не понимаю. Не могли бы вы объяснить это более подробно, пожалуйста. – Ph4nt0m
Возможно, я что-то не понял. Как я понимаю, у вас проблема с отображением правильно повернутого изображения, так как вы кешируете это изображение с предыдущим вращением? Поэтому я подумал, что, возможно, в контроллере, где вы вращаете изображение. Вы можете сохранить повернутое изображение в кеше. – mmmm