提交 814dd007 编写于 作者: J Jeremy Kemper

Performance: patch cgi/session/pstore to require digest/md5 once rather than...

Performance: patch cgi/session/pstore to require digest/md5 once rather than per #initialize. Closes #7583.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6431 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 f596dda0
*SVN*
* Performance: patch cgi/session/pstore to require digest/md5 once rather than per #initialize. #7583 [Stefan Kaes]
* Undeprecate redirect_to with Hash argument and additional url_for parameters. #7837 [subelsky]
* Cookie session store: ensure that new sessions doesn't reuse data from a deleted session in the same request. [Jeremy Kemper]
......
# CGI::Session::Pstore.initialize requires 'digest/md5' on every call.
# This makes sense when spawning processes per request, but is
# unnecessarily expensive when serving requests from a long-lived
# process.
require 'cgi/session'
require 'cgi/session/pstore'
require 'digest/md5'
class CGI::Session::Pstore #:nodoc:
def initialize(session, option={})
dir = option['tmpdir'] || Dir::tmpdir
prefix = option['prefix'] || ''
id = session.session_id
md5 = Digest::MD5.hexdigest(id)[0,16]
path = dir+"/"+prefix+md5
path.untaint
if File::exist?(path)
@hash = nil
else
unless session.new_session
raise CGI::Session::NoSession, "uninitialized session"
end
@hash = {}
end
@p = ::PStore.new(path)
@p.transaction do |p|
File.chmod(0600, p.path)
end
end
end
......@@ -2,6 +2,7 @@
require 'action_controller/cgi_ext/cookie_performance_fix'
require 'action_controller/cgi_ext/raw_post_data_fix'
require 'action_controller/cgi_ext/session_performance_fix'
require 'action_controller/cgi_ext/pstore_performance_fix'
require 'action_controller/session/cookie_store'
module ActionController #:nodoc:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册