• Y
    Got overhead down from 127 to 85. All tests pass: · 0adbeeb0
    Yehuda Katz 提交于
      * Tentatively replaced HeaderHash with SimpleHeaderHash, which does not preserve
        case but does handle converting Arrays to Strings in to_hash. This requires
        further discussion.
      * Moved default_charset to ActionDispatch::Response to avoid having to hop over
        to ActionController. Ideally, this would be a constant on AD::Response, but
        some tests expect to be able to change it dynamically and I didn't want to change
        them yet.
      * Completely override #initialize from Rack::Response. Previously, it was creating
        a HeaderHash, and then we were creating an entirely new one. There is no way to
        call super without incurring the overhead of creating a HeaderHash.
      * Override #write from Rack::Response. Its implementation tracks Content-Length,
        and doing so adds additional overhead that could be mooted if other middleware
        changes the body. It is more efficiently done at the top-level server.
      * Change sending_file to an instance_variable instead of header inspection. In
        general, if a state is important, it should be set as a property of the response
        not reconstructed later.
      * Set the Etag to @body instead of .body. AS::Cache.expand_cache_key handles
        Arrays fine, and it's more efficient to let it handle the body parts, since
        it is not forced to create a joined String.
      * If we detect the default cache control case, just set it, rather than setting
        the constituent parts and then running the normal (expensive) code to generate
        the string.
    0adbeeb0
compatibility.rb 4.3 KB