![](/img/trans.png)
[英]What are the implications of storing large amounts of data in the session cookie?
[英]Storing large amounts of info within a cookie
到目前為止,我正在開發一個演示工具(PHP,jQuery,XHTML),除了我有一個問題外,我需要暫時保存某些信息,並通過cookie進行操作,但是cookie的限制Apache是4Kb,並且cookie內沒有空間了,所以我想知道如何在仍然不希望將任何信息發送到數據庫或文本文件的情況下,將其保存在cookie中而不會出現問題。
我不知道是否可以通過使用路徑或其他域來解決問題。
非常感謝您能為我提供的任何幫助:)。
會話就像Cookies一樣,但是它們只是為客戶端提供唯一的ID(“會話ID”),並將其余數據保留在服務器上。
當然,這存儲在數據庫或文件中,但對您完全透明,SQL查詢或文件讀取或其他任何內容都不會引起混亂。
您只需要用$_SESSION
替換所有$_COOKIE
並放入session_start();
在代碼頂部: http : //www.tizag.com/phpT/phpsessions.php
不過有一個缺點:PHP設置所有會話cookie都沒有超時,瀏覽器通常將其視為“每當關閉瀏覽器時刪除此cookie”。 解決方法請參見此問題: 30分鍾后如何終止PHP會話?
首先,您應該考慮是否真的需要在Cookie中保存大量數據。 也許您可以壓縮您的信息,或者只是不需要所有信息?
原因是:cookie是在每次請求時發送到服務器的(可能超過1)。 如果您提供來自同一域的圖像,則可能會收到20多個請求,每個請求都發送這個大Cookie。 假設您的Cookie可以保存5kb的數據,那么您就有100kb的數據可以循環通過。
請參閱: http : //developer.yahoo.com/performance/rules.html#cookie_size
如果您只需要當前會話的信息,為什么不將其保存到會話變量(或memcache等pp)中呢? 如果僅在cookie中保存一個id,並且在會話中與此ID無關,則可以從數據庫中加載它並將其保存在會話中。 因此您每個會話只能訪問一次。
如果您提供更多背景信息,可能會更好。
您可以創建多個Cookie,但這不是一個好主意。 每次請求時,Cookie都會在線發送。 考慮將您的會話信息放在數據庫或緩存層中。
我猜您可以使用DOM元素存儲非敏感信息。 如果您使用的是jQuery,則可以使用.data()-http: //api.jquery.com/data/
但是,頁面完全加載后就消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.