2011-09-02 50 views
1

我工作的一個演示工具(PHP,jQuery的,XHTML)內,到目前爲止這麼好,但我有一個問題,我需要暫時保存某些信息,我通過cookies做到這一點,但是在Apache中cookie的限制是4Kb,並且我在cookie中沒有空間,所以我想知道如果我仍然不想發送任何問題信息到數據庫或文本文件。存儲大量信息的一個cookie

我不知道是否可能通過使用路徑或其他領域我也許能工作的事情了。

我真的很感激任何幫助,您可以提供我:)。

+1

描述你想存儲的cookie數據。 (你知道,這正是爲什麼簡單/惰性會話替代方案存在的原因。也許'.localStorage'可能是一個選項?) – mario

回答

0

您可以創建多個Cookie,但這不是一個好主意。每次請求cookies都會通過網絡傳輸。考慮將會話信息放入數據庫或緩存層。

2

會話類似於Cookies,但它們只是給客戶端一個唯一的ID(「會話ID」)並將其餘數據保留在服務器上。

當然,這是存儲在一個數據庫或文件,但這是完全透明的,沒有任何關於SQL查詢或文件讀取或任何東西搞亂。

你只需要$_SESSION全部更換$_COOKIE,把session_start();在你的代碼的頂部:http://www.tizag.com/phpT/phpsessions.php

一個缺點,但:PHP設置與沒有超時,該瀏覽器通常會將所有會話cookie「刪除此每當瀏覽器關閉時cookie「。請參閱此問題的解決方法:How do I expire a PHP session after 30 minutes?

1

首先,您應該考慮是否真的需要在cookie中保存那麼多數據。也許你可以壓縮你的信息或只是不需要所有的信息?

原因是:cookie會在每個請求發送到服務器(這可能會超過1)。如果您從同一個域提供圖片,則可能會發送超過20個請求,每個請求都發送這個大型cookie。假設你的cookie包含5kb的數據,你只需要100kb來循環你的信息。

看到:http://developer.yahoo.com/performance/rules.html#cookie_size

,如果您需要的信息只是當前會話,爲什麼不將其保存到會話VAR(或內存緩存etc.pp.)? 也許它可以,如果你只是在cookie中保存一個id,如果你的會話中沒有這個id,你可以從數據庫中加載它並保存在會話中。所以每個會話都有一次性訪問。

也許它更好,如果你提供一些背景資料。

0

我想你可以存儲非敏感信息與DOM元素。如果您使用的是jQuery,您可以使用.data() - http://api.jquery.com/data/

但是,在頁面完成重新加載後,它就消失了。