Mat*_*age 6 cookies session caching ruby-on-rails varnish
我对Ruby on Rails中会话生命周期的理解(特别是v3及更高版本)是在请求开始时为每个请求创建会话,如果该请求没有携带现有会话cookie,则会创建新会话cookie.将创建,否则会话cookie被反序列化并存储在会话哈希中.
当然,这样做的目的是支持许多安全功能,例如CSRF等.
但是,当涉及到使用HTTP缓存服务和代理(如Varnish)的站点中的页面缓存时,这会带来一些问题,因为大多数配置往往会在请求和响应上删除这些(通常是所有)cookie.结束(因为缓存通常用于广义受众).
我知道可以设置Varnish等来创建包含cookie详细信息的对象哈希,这会将缓存的数据范围限定到该会话(以及那个用户),但是我想知道这是否完全必要.
我有一个相当"静态"的应用程序 - 内容从数据库中提取,呈现为一个可以缓存的页面 - 有一些元素(例如评论计数,'最近'项目等)可以是添加了一个ESI,但是对于每个请求,Rails仍然倾向于设置一个新会话,并且当用户已经有一个会话时,这个东西被缓存服务器剥离.
我想知道是否可能(通过预先存在的功能,或者自己构建功能)允许开发人员控制何时需要会话,并且只有在指定的是带有cookie,会话的前后转发时必要的初始化/反序列化等.
那,或者我正在以错误的方式思考这个问题,需要从另一个角度来解决这个问题......
小智 1
据我所知,rails 会话可以通过 ActionController::SessionManagement 进行相当深入的控制
http://ap.rubyonrails.org/classes/ActionController/SessionManagement/ClassMethods.html#M000070
API 文档中有一些针对每个操作、每个控制器等禁用它的示例。
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |