How could I keep the logged session and clear cache except session in memcache
在我的系统中,有许多
当前,它将清除每个新部署上的内存缓存中的所有数据。
通过运行
此外,我可以在缓存服务器中看到
但是每次,当我关闭iPhone上的浏览器时,都需要一次又一次地重新登录(我必须输入错误的内容)。
我将服务器设置在
的后面
如何在ELB后面的每台服务器之间保持用户会话
要使用户每次回来都保持登录状态。
缓存服务器
1 2 3 | | 8 | 2016-03-01 10:07:59 +0000 | 291 | _session_id:08f1d7e8e82055367c44372d431b7f23 | | 8 | 2016-03-01 10:07:22 +0000 | 291 | _session_id:3553ad00c578b175d789f02dc696dd95 | | 8 | 2016-03-01 10:04:22 +0000 | 291 | _session_id:5cc2302455981a8a5d3cea98deb80acb | |
confi / initialize / session.rb(我用Dalli和memcache保存缓存)
1 2 | Rails.application.config.session_store :cookie_store, key: '_sampleA_session' Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 6.month |
查看缓存/模型缓存
1 2 3 | - cache("common_header", skip_digest: true) do - cache("footer", skip_digest: true) do ... |
cache.rake(rake任务)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | require 'socket' namespace :memcached do desc 'Flushes whole memcached local instance' task :flush do server = ENV['MEMCACHE_DB'] port = 11211 command ="flush_all\ \ " socket = TCPSocket.new(server, port) socket.write(command) result = socket.recv(2) if result != 'OK' STDERR.puts"Error flushing memcached: #{result}" end socket.close end end |
production.rb
1 2 | config.action_controller.perform_caching = true config.cache_store = :dalli_store, ENV['MEMCACHE_DB'], { :pool_size => 10 ,compress: true } |
对于两个视图片段缓存,您可以执行(docs):
1 2 | expire_fragment("common_header") expire_fragment("footer") |
这将使缓存的片段无效,并因此更新您从该片段中的模型读取的值(因为重新呈现了片段)。如果这是您对模型缓存的意思,那么您就很好了。如果您还想清除SQL查询缓存(尽管我不知道您为什么要这样做,因为Rails会自动使它无效),您可以参考此博客文章。