ここに私が持っているもの:Symfony2:RedirectResponseでLast-Modifiedを設定
私は与えられたイメージを回転させるサービスを呼び出すルートを持っています。
/**
* @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
}
と、ここで私がやりたいものです。
私は(リファラの助けを借りて)から来たルート上のリダイレクトを行います。 これはうまくいきますが、リダイレクト後、回転されたイメージはキャッシュされているため表示されません。
私は、現在のDateTimeのヘッダーに "Last-Modified"を設定すると、ブラウザが画像をリロードすることが強制されると考えました。私はそれを次のように実行しようとしました :
if ($referer = $request->headers->get('referer')) {
$response = new RedirectResponse($referer);
$response->setLastModified(new \DateTime());
return $response;
}
しかし残念ながら「Last-Modifiedのは、」のみrotate_imageルートのヘッダーではなく、私がでリダイレクトされた1に設定されています。
どのようにすればこの問題を解決できますか?
編集:
私はちょうどこのようなメディアのURLにversionパラメータを追加することで、私の問題を「解決」している:
return $mediaUrl . '?v=' . md5($media->getUpdatedAt()->format('Y-m-d H:i:s'));
をので、画像を回転させた後、私はメディアを更新していますエンティティが変更され、バージョンが変更され、「新しい」イメージが表示されます。
キャッシュされたイメージをキャッシュするのはどうですか? :) – mmmm
@mmmm申し訳ありませんが、私は本当にそれを取得しません。もっと詳しく説明してください。 – Ph4nt0m
多分私は何か誤解していました。私が理解していることは、あなたが正しく回転されたイメージを表示して問題を抱えていることです。前回の回転でこのイメージをキャッシュしていますか?だから私はおそらくあなたがイメージを回転しているコントローラの中にあると思った。回転したイメージをキャッシュに保存することができた。 – mmmm