Относительно 1) «Какова максимальная длина значений cookie?»
Не существует обязательного максимума, просто рекомендация в RFC 2109 :
Пользовательские агенты, созданные для определенных целей или для ограниченной емкости
устройства должны предоставлять как минимум 20 файлов cookie размером 4096 байт, чтобы обеспечить
что пользователь может взаимодействовать с сервером происхождения на основе сеанса.
Имейте в виду, что файлы cookie будут передаваться каждый раз, когда конечные точки обмениваются данными.
Что касается хранения больших значений на стороне клиента, dojox.storage
пришло мне в голову (хотя это javascript, он показывает их подход к этой общей проблеме). Они абстрагируют различные несовместимые способы хранения больших наборов данных в клиенте - например, используя один из доступных
- AirDBStorageProvider,
- AirEncryptedLocalStorageProvider,
- AirFileStorageProvider,
- FlashStorageProvider,
- GearsStorageProvider,
- WhatWGStorageProvider.
Если у вас есть контроль над клиентами, вы можете пойти по маршруту HTML5 с localstorage , который обеспечивает максимум 5 МБ локального клиентского пространства.
И еще одна заключительная идея: сжимать или кодировать хранимые данные, или, возможно, разделить их, чтобы сервер мог принять некоторые фактические значения, в то время как вы сохраняете только ключи на клиенте (что, в свою очередь, добавило бы больше соединения конечно, все это накладные расходы.