ページ

2009年8月31日月曜日

NSHTTPCookieStorage相当のクラスを自前で実装する (6)クッキー送出のロジックを改良

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回までは URL に適合するクッキーの検索は、格納してある全てのクッキーを対象に行っていた。これではクッキーの数が増えた場合に効率が悪いので少し改良を加える。複雑なことはやらず、できるだけ単純にしてみよう。

具体的にはドメインをキーとしたハッシュ(辞書)を作り、その下に実際のクッキー配列を格納するようにする。

(イメージ)

NSMutableDictionary
|
|--key:".xcatsan.com"
| value: NSMutableDictionary
| |-- key:"/xxx", value={path="/", name="xxx", ..}
| |-- key:"/some/yyy", value={path="/some", name="yyy", ..}
| :
|
|--key:".co-co-adays.com"
| value: NSMutableDictionary
| |-- key:"/aaa", value={path="/", name="aaa", ..}
| |-- key:"/some/bbb", value={path="/some", name="bbb", ..}
| :


ドメイン名をキーとして取得できる値は NSMutableDictionary とする。path+name をキーとして実際のクッキーをその値として登録する。これによって domain+path+name でユニークが保たれる。


なおドメインは後方一致もありなので、単純なキー検索だけでは漏れが生じてしまう。
この為、検索時にはドメインの完全一致に加えて、後方一致も加える。

(イメージ)
www.japan.xcatsan.com のクッキーを検索する。

(1) www.japan.xcatsan.com をキーにして検索
(2) .japan.xcatsan.com をキーにして検索
(3) .xcatsan.com をキーにして検索

上記でヒットする配列群を前回までのロジックでチェックする。

(続く)