2016-04-08 18 views
0

Symfony ile önbellek kullanmayı deniyorum. benim denetleyicisiSymfony'de özel önbellek ile genel önbellek arasındaki farklar

bu pasajını

public function indexAction(Request $request) 
{ 
    $response = $this->render('default/index.html.twig', [ 
     'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..'), 
    ]); 

    $response->setMaxAge(10); 
    $response->setPublic(); 
    return $response; 
} 

yazıp benim dal içinde ben app_dev.php de $kernel = new AppCache($kernel); etkin sonra bir işlevi random(100) varsa ve yenileme ben aynı "rasgele sayı gördüğünüzde app.php "10 saniye ve tamam.

$response->setPublic();'u Aktarırsam, önbellek özel olur ve her zaman farklı sayılar alır. Benim uygulamaya giriş de çalıştı, ancak önbellek size söyle, Ben önbellek özel ise appcache()

class AppCache extends HttpCache 
{ 
    protected function getOptions() 
    { 
     return array(
      'debug'     => false, 
      'default_ttl'   => 0, 
      'private_headers'  => array('Authorization', 'Cookie'), 
      'allow_reload'   => false, 
      'allow_revalidate'  => false, 
      'stale_while_revalidate' => 2, 
      'stale_if_error'   => 60, 
     ); 
    } 
} 
+0

Sorunun ne olduğundan emin değilim, bu konuda daha net olabilir misiniz? – Federkun

+0

Elbette! $ response-> setPublic() kullandığımda; önbellek çalışır, (Ben test etmek için rasgele (100) twig ve 10 sn için aynı sayıyı görüyorum), eğer $ response-> setPrivate() kullanırsam, her zaman farklı bir numaraya sahip olurum (tarayıcıyı yenilerken) – monkeyUser

cevap

2

yılında getOptions eklemek de çalıştı

çalışmıyor görünüyor Yanıtı tersine yanıtını istemediğinizi tersine çevirin. Symfony'nin bu başlığı gönderir:

Cache-Control: private 

ve cevabı tek bir kullanıcı amaçlanan bir ürün olduğundan, bu, ara proxy atlama. Bu durumda tarayıcı önbelleği ile çalışırsınız. Aksi takdirde, public olarak ayarlayın.

Daha fazla bilgiyi buradan edinebilirsiniz: public vs private response.

+0

Ben özel kullanıyorum, önbellek kullanmıyorum? Önbellek özelinin tek kullanıcılı (oturum açmış gibi) olduğunu anlıyorum. – monkeyUser

+1

Hayır, eğer 'Cache-Control: private 'ayarladıysanız, sadece ters proxy'nin önbelleğini kullanmıyorsunuz, ancak hala tarayıcının önbelleğini – Federkun

+0

çok kullanabilirsiniz, bu benim aradığım cevap! – monkeyUser