2015-04-14 34 views
0

我正在爲此苦苦掙扎,我需要將數據存儲在瀏覽器的緩存中。我使用Symfony的2.6.1,我用下面的代碼:緩存問題Symfony商店數據

if($request->cookies->get('myCookie')){ 
     /* do stuff */ 

    }else{ 
     $cookie = new Cookie('myCookie', $myData, 0, '/', null, false, false);    
     $response->headers->setCookie($cookie);   
     $response->setCache(array(
      'etag'   => 'abcdef', 
      'last_modified' => new \DateTime(), 
      'max_age'  => 600, 
      's_maxage'  => 600, 
      // 'private'  => false, 
      'public'  => true, 
     )); 
     $response->send(); 

     /* send a response */ 
    } 

我需要1檢查如果cookie「的myCookie」的存在,如果沒有它應該創建並存儲在瀏覽器中。我的問題是,當我簡單地刷新頁面到cookie是存在的,但如果我關閉瀏覽器,當我再次打開cookie不存在。

我認爲這是在當我設置cookie $響應 - > setCache(陣列(...))

在官方網站的陣中,沒有多一些配置/禮有用的信息。

http://symfony.com/doc/current/book/http_cache.html#types-of-caches

+0

你爲什麼不只是保存在會話中?瀏覽器關閉後保存數據是否必要? – KhorneHoly

+0

是的,這些數據應該保留在緩存的瀏覽器中。當用戶打開網站時,我應該能夠讀取存儲的數據並採取相應的行動。 – JMG

回答

2

餅乾之中去了其實是有道理的。你構建的cookie行:

$cookie = new Cookie('myCookie', $myData, 0, '/', null, false, false); 

的第三個參數(0)表示,這是一個會話cookie - 將盡快爲您關閉瀏覽器丟棄。

嘗試這樣:

// Cookie stays alive for an hour 
$cookie = new Cookie('myCookie', $myData, time() + 3600, '/', null, false, false); 
+0

I'hav現在嘗試過,如果我使用3600而不是0,它不會創建一個cookie。 – JMG

+1

我的錯誤,對此感到遺憾。該數字不應該是相對而是絕對的。嘗試把'時間()+ 3600' .... –

+0

是的,與'時間()+ 3600'它的工作。謝謝 – JMG