【发布时间】:2011-11-16 12:34:10
【问题描述】:
所以我有一段看起来像这样的代码:
post '/calendar' do
#pull variables from form
@cal = a.makeCal(form, variables) #do some work here with variables
session["value"] == @cal
haml :calendar
end
然后我有这个:
get '/print' do
@cal = session["value"]
haml :print
end
我所做的测试是通过将表单发布到 /calendar 创建一个日历。接下来我手动转到 /print,我希望我的变量 @cal 能够保留在 cookie 中。我应该有吗?我这样做对吗?
我正在尝试做的是获取@cal 值,该值是彼此内部的四个数组,并将其传递到打印页面,而无需重新计算@cal。尝试通过会话执行此操作是否正确?
【问题讨论】:
-
唯一的“不正确的方法”是,根据数组的大小,使用 cookie 支持的会话可能会在 cookie 中为响应和请求传递大量信息从那时起。
require "base64"; Base64.encode64(Marshal.dump(@cal)).length有多大? -
@Phrogz 当我运行它时它给了我 '6666' 是不是太大了?
-
是的;不保证任何超过 4k 的内容都可以正常工作,并且在许多浏览器中都无法正常工作。您应该考虑使用更好的会话存储,例如内存支持、文件支持或数据库支持的会话。