У нас есть приложение, которое использует CookieStore
для хранения данных сеанса. Помимо прочего, мы используем эту функциональность для хранения объекта в сеансе для повышения производительности нашего сайта, например,
session[:data] = some_object
Обычно это нормально, но иногда представление some_object
слишком велико, чтобы его можно было сохранить в виде файла cookie. В этом случае мы полностью рады, что не сохранили объект в сеансе - это просто немного повышает производительность сайта и влияет только на некоторых наших пользователей. Однако, чтобы это работало, нам нужно было бы решить на раннем этапе, сохранять объект или нет, в противном случае мы получим ActionDispatch::Cookies::CookieOverflow
на уровне промежуточного программного обеспечения - слишком поздно, чтобы что-то с этим сделать.
Есть ли способ получить размер объекта простым способом? Мы думаем о преобразовании объекта в JSON и проверке длины строки, но, возможно, найдутся лучшие решения.
Короче говоря, мы заинтересованы в реализации следующего stored_as_cookie_size
метода:
if stored_as_cookie_size(some_object) < LIMIT
session[:data] = some_object
else
session[:data] = nil
end