作者gpmm (銀色)
看板Ajax
標題Re: [問題] 靠AJAX就不用使用SESSION或COOKIE?
時間Tue May 15 23:01:39 2012
※ 引述《TonyQ (自立而後立人。)》之銘言:
: 因為你原文是寫 session 需要的話可以放到 memory ,
: 但根據我的經驗是反過來,
: session 一般是放 memory ,需要時才轉 io 或 db。
: 這也有可能是語言或平台的差異啦,
: 但是據我所知,asp/php/javaee/asp.net 應該都是預設放記憶體才對。
我只能肯定 php 預設是丟 file XDD
而且 php session 搭配 memory 的最佳解也是 mmc 而非直接食用記憶體。
: 基本上各 container 的 default session 實作,應該都是 in memory 的吧,
: 除了像 php 的 CI 之類的 framework 層有自己想法自己包 db session。
: 還有一個特例是 cluster 環境下,實作時也會特別把 session 弄成可以 IO。
: 預設會是 in memory 是有理由的,
: 你要能 IO 的東西勢必要是能 serializable (可序列化)的。
: 可序列化意味著可以進行 IO 操作,寫入檔案裡面跟還原回來。
: 也就是說,如果是你放的是 string/int ..etc 這類基本型態就算了,
: 基本型態通常都會是可序列化的。
: 但如果今天你放的是 custom class 的 instance ,
: 他存進去後還能不能安全照你想的方式撈回來,那就是另一回事了。
: 當然有些語言「可能」不用煩惱這些問題,(語言特性或限制就處理掉了)
: 但是在很多地方,這些還是討厭的事情。
不懂 XDD
session 的儲存「怎麼實做」跟「儲存在哪裡」應該沒有直接的關聯吧?
以 PHP 而言無論是丟 file 或 memory 都同樣是做 serialize,
所以資源能否放進 session 其實是關乎
那樣東西自身的 serialize 能力,
例如 string / array / object 等等。
當然如果是自己寫 session handler 就跟這沒關係了 XD
: 另外,這個問題要看你把多少東西塞 session ,
: 我前公司的產品在 session 每個人就可以到幾 mb ,(有特別需求)
: 就不見得一定能這樣玩了。XD
: 我只是在說明「預設」跟「常見」的狀況啦,
: 當然每個專案還會因為每個專案的需求調配跟調整囉。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.108.101
※ 編輯: gpmm 來自: 175.181.108.101 (05/15 23:01)
1F:→ TonyQ:基本上看起來 php 是個特例,以 JavaEE 而言就很有差了 :P 05/15 23:05
2F:→ TonyQ:有些語言進/出 session 時是不作 serialize/deserialize 的 05/15 23:06
3F:→ TonyQ:所以是不同語言對 session 操作上的認知不同,因為我太習慣 05/15 23:07
4F:→ TonyQ:session 是存在 memory 的,所以對 php 這個特性反而是誤判 05/15 23:08
5F:→ gpmm:每個習慣了自己常用語言的人都會覺得別人家是特例 XDD 05/15 23:13
6F:→ gpmm:我也沒想過別的語言會是預設塞在 memory 裡 05/15 23:13
7F:→ gpmm:查了一下,ROR 預設是加密後塞在 cookie 裡 :Q 05/15 23:16
8F:→ gpmm:nodejs 預設是存在記憶體 05/15 23:16
9F:→ TonyQ:cookie 塞的下 ? 我是有查到 rails 有in memory的實作,也沒 05/15 23:17
10F:→ TonyQ:有 serialize . 05/15 23:17
11F:→ TonyQ: 當他是用 in memory 的時候 05/15 23:18
12F:→ gpmm:我是都找預設的啦 XD 以實做而言那就什麼都有可能了 05/15 23:18
13F:→ TonyQ:無所謂啦,特例不過是個詞, asp 也是 in memory 05/15 23:18
14F:→ gpmm:asp.net 預設也是塞記憶體 05/15 23:18
15F:→ gpmm:你不知道 phper 天生對「特例」這一類的詞很敏感(炸) XDDD 05/15 23:19
16F:→ TonyQ:我是真的不知道,why? XDDD 05/15 23:20
17F:→ TonyQ:Sorry, 因為我認知中碰過得語言大多是 in memory 居多。~_~a 05/15 23:20
18F:→ superpai:php的存在本身就是一個特例...(遠目) 05/15 23:35
19F:→ superpai:然後CI還蠻奇怪的 你有db的話session就放db 05/15 23:37
20F:→ superpai:沒有db的話就沒加密塞在cookie裡 05/15 23:38
21F:→ superpai:不知道為什麼不想用php的session 05/15 23:38
22F:推 mrbigmouth:加密後塞cookie裡這種作法實在好神祕.... 05/16 03:28
23F:→ mrbigmouth:等等 沒加密塞在cookie裡也太神了吧!!! 這樣登入資訊 05/16 03:28
24F:→ mrbigmouth:用session真的沒問題!? 05/16 03:28
25F:→ mrbigmouth:普遍上的認知不就是session放伺服器cookie不安全嗎!? 05/16 03:29
26F:→ mrbigmouth:加密塞cookie我都很沒安全感了.... 05/16 03:30
27F:→ fillano:node.js本身沒session機制的,應該是connect的預設作法 05/16 15:42
28F:→ gpmm:喔喔喔喔是費公 05/16 15:53
29F:推 hellolucky:Rails預設是cookie沒錯 但也有db和in memory 05/16 21:36
30F:→ hellolucky:改個config就可以輕鬆處理好 05/16 21:38
31F:→ hellolucky:不過in memory不是最快的嗎?配合memcached或redis 05/16 21:39
32F:→ hellolucky:還可以設定時間expire 05/16 21:39
33F:→ weiyucsie:除了一些persistent connections 05/20 01:10
34F:→ weiyucsie:好像php網頁內的變數,大部分都是在單次request存活 05/20 01:11
35F:→ weiyucsie:不知道這和php的session要serialize有沒有關係 05/20 01:11
36F:→ weiyucsie:(像是cgi一個process處理一個request的感覺) 05/20 01:15
37F:推 EROS4:1 06/05 19:14