2013-03-21 23 views
5

Niedawno napisałem swoją pierwszą aplikację Symfony2 i wszystko jest w porządku, z wyjątkiem tego, że teraz chcę dodać buforowanie zapytań, aby poprawić wydajność i ograniczyć niepotrzebne zapytania. Dodałem następujące linie do jednego konstruktora konkretnej kwerendy:Czyszczenie pamięci podręcznej zapytań w Symfony2/Doctrine

$query->useResultCache(true) 
     ->useQueryCache(true); 

Po pierwszym żądaniu pamięć podręczna jest używana zgodnie z oczekiwaniami. Potrafię to sprawdzić w profilerze. Wszystko jest świetne!

Problem polega na tym, że mam również prosty panel administracyjny, który napisałem, który pozwala użytkownikowi modyfikować zawartość, ale po zmianach wersja z pamięci podręcznej jest nadal używana.

Czy mogę "zaprogramować" program Symfony2/Doctrine, aby wyczyścić pamięć podręczną zapytań podczas aktualizacji danych lub czy istnieje sposób jej konfiguracji?

Wygląda na to, że jest to częsty problem, ale nie mogę znaleźć w Google informacji dotyczących tego problemu!

+0

może u proszę dać mi znać, jak dokładnie możesz sprawdzić, czy pamięć podręczna działa za pomocą profilera, w szczególności KORZYSTAJ Z PROFILERA. Próbowałem sprawdzić ilość zapytań do bazy danych i ponieważ uzyskuję taką samą liczbę zapytań za każdym razem, przed i po przeprowadzeniu podobno pamięci podręcznej, więc nie wiem, czy działa lub czy ma zrób to, tak czy inaczej, podpowiedzi ?? –

Odpowiedz

19

Polecam używanie wynik cache id - w ten sposób można usunąć jedną szczególną pamięć podręczną wynik:

$query->setResultCacheId('my_custom_id'); 
// or shorter notation with lifetime option 
$query->useResultCache(true, 3600, 'my_custom_id'); 

// to delete cache 
$cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl(); 
$cacheDriver->delete('my_custom_id'); 
// to delete all cache entries 
$cacheDriver->deleteAll(); 

Aby uzyskać więcej informacji na temat cache kasowania patrz:
http://docs.doctrine-project.org/en/latest/reference/caching.html#deleting

+0

Awesome! Dziękuję Ci. Działa idealnie! – Adam

Powiązane problemy