明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET中Cookie編程的基礎(chǔ)知識(shí)(3)

[摘要]查看您的 Cookie  您可能會(huì)發(fā)現(xiàn),了解創(chuàng)建 Cookie 的效果會(huì)對(duì)您很有幫助。而查看 Cookie 是比較容易的,因?yàn)樗鼈兌际俏谋疚募P(guān)鍵在于您能找到它們。不同的瀏覽器保存 Cookie 的方式也不同。我將介紹 Internet Explorer 是如何保存 Cookie 的。如果您使用...
查看您的 Cookie

  您可能會(huì)發(fā)現(xiàn),了解創(chuàng)建 Cookie 的效果會(huì)對(duì)您很有幫助。而查看 Cookie 是比較容易的,因?yàn)樗鼈兌际俏谋疚募P(guān)鍵在于您能找到它們。不同的瀏覽器保存 Cookie 的方式也不同。我將介紹 Internet Explorer 是如何保存 Cookie 的。如果您使用的是其他瀏覽器,請(qǐng)查看該瀏覽器的幫助,以了解有關(guān) Cookie 處理方面的知識(shí)。

  查看 Cookie 的一個(gè)簡(jiǎn)便方法是讓 Internet Explorer 為您查找。在 Internet Explorer 中,從“工具”菜單中選擇“Internet 選項(xiàng)”,在“常規(guī)”選項(xiàng)卡中單擊“設(shè)置”,然后單擊“查看文件”。Internet Explorer 將打開一個(gè)窗口,顯示所有的臨時(shí)文件,包括 Cookie。在窗口中查找以“Cookie:”開頭的文件 或查找文本文件。雙擊一個(gè) Cookie,在默認(rèn)的文本文件中打開它。

  您也可以在硬盤上查找 Cookie 的文本文件,從而打開 Cookie。Internet Explorer 將站點(diǎn)的 Cookie 保存在文件名格式為 <user>@<domain>.txt 的文件中,其中 <user> 是您的帳戶名。例如,如果您的名稱為 mikepope,您訪問的站點(diǎn)為 www.contoso.com,那么該站點(diǎn)的 Cookie 將保存在名為 mikepope@www.contoso.txt 的文件中。(該文件名可能包含一個(gè)順序的編號(hào),如 mikepope@www.contoso[1].txt。)

  這個(gè) Cookie 文本文件是與用戶相關(guān)的,所以會(huì)按照帳戶分別保存。例如,在 Windows XP 中,您可以在如下所示的目錄中找到 Cookie 文件:

c:\Documents and Settings\<user>\Cookies

  要查找最新創(chuàng)建的 Cookie,可以按修改日期對(duì)目錄內(nèi)容進(jìn)行排序,并查找最近修改的文件。

  您可以使用文本編輯器打開 Cookie。如果該文件包含多個(gè) Cookie,這些 Cookie 之間將用星號(hào) (*) 分隔。每個(gè) Cookie 的第一行是 Cookie 的名稱,第二行是值,其余各行則包含 Cookie 的日常處理信息,例如過期日期和時(shí)間。Cookie 中還有一個(gè)簡(jiǎn)單的校驗(yàn)和,如果更改 Cookie 名稱或值的長(zhǎng)度,瀏覽器就會(huì)檢測(cè)到修改并刪除該 Cookie。

  多值 Cookie(子鍵)

  以上示例為每個(gè)要保存的值(用戶名、上次訪問時(shí)間)都使用了一個(gè) Cookie 。您也可以在一個(gè) Cookie 中保存多個(gè)名稱/值對(duì)。名稱/值對(duì)也稱作“鍵”或“子鍵”,具體取決于您讀取的內(nèi)容。(如果您熟悉 URL 的結(jié)構(gòu),就會(huì)發(fā)現(xiàn)子鍵與其中的查詢字符串非常相象。) 例如,如果不希望創(chuàng)建名為“userName”和“l(fā)astVisit”的兩個(gè)單獨(dú)的 Cookie,可以創(chuàng)建一個(gè)名為“userInfo”的 Cookie,并使其包含兩個(gè)子鍵:“userName”和“l(fā)astVisit”。

  有很多原因會(huì)讓我們用子鍵來代替單獨(dú)的 Cookie。最顯而易見的是,把相關(guān)或類似的信息放在一個(gè) Cookie 中會(huì)比較有條理。另外,由于所有信息都在一個(gè) Cookie 中,所以諸如有效期之類的 Cookie 屬性就適用于所有信息。(當(dāng)然,如果要為不同類型的信息指定不同的過期日期,就應(yīng)該把信息保存在單獨(dú)的 Cookie 中。)

  帶有子鍵的 Cookie 還可以幫助您減小 Cookie 的大小。如前面的 Cookie 的限制一節(jié)所述,Cookie 的總大小限制在 4096 字節(jié)以內(nèi),而且不能為一個(gè)網(wǎng)站保存超過 20 個(gè) Cookie。利用帶子鍵的單個(gè) Cookie,站點(diǎn)的 Cookie 數(shù)量就不會(huì)超過 20 個(gè)的限制。此外,一個(gè) Cookie 會(huì)占用大約 50 個(gè)字符的基本空間開銷(用于保存有效期信息等),再加上其中保存的值的長(zhǎng)度,其總和接近 4K 的限制。如果使用五個(gè)子鍵而不是五個(gè)單獨(dú)的 Cookie,您可以省去四個(gè) Cookie 的基本空間開銷,總共能節(jié)省大約 200 個(gè)字節(jié)。

  要?jiǎng)?chuàng)建帶子鍵的 Cookie,您可以使用用于編寫單個(gè) Cookie 的各種語法。以下示例顯示了編寫同一 Cookie 的兩種不同方法,其中的每個(gè) Cookie 都帶有兩個(gè)子鍵:

Response.Cookies("userInfo")("userName") = "mike"
Response.Cookies("userInfo")("lastVisit") = DateTime.Now.ToString
Response.Cookies("userInfo").Expires = DateTime.Now.AddDays(1)

Dim aCookie As New HttpCookie("userInfo")
aCookie.Values("userName") = "mike"
aCookie.Values("lastVisit") = DateTime.Now.ToString
aCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(aCookie)