Как сделать недействительной httpcache одним действием?

У меня есть просто действие:

/**
* @Route("/", name="index")
*/
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();

$news = $em->getRepository('AppBundle:News')->findBy(array('main' => 1));
$response = $this->render('index.html.twig', array('news' => $news));

$response->setSharedMaxAge(3600);
$response->headers->addCacheControlDirective('must-revalidate', true);

return $response;
}

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

/**
* @Route("/admin/save-news", name="admin_save_news")
*/
public function saveNewsAction(Request $request)
{
//...
$em->persist($news);
$em->flush();
//how to invalidate here?
//...
}

Я старался:

protected function invalidateCache($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PURGE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

return $status == 200;
}

$ url = ‘http://example.com/«;

Но это не работает и, кроме того, странно … Это должно быть лучше

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector