Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Aug 16, 2010
  1. @mbailey @jyurek

    Added fingerprinting support

    mbailey authored jyurek committed
    Leverage browser caching and proxy caching by setting far future Expires
    headers and changing filenames when file contents change. This can make
    your web app faster for users and also reduce your bandwidth costs.
    
    By adding the column :avatar_fingerprint to our db table and including
    :fingerprint in the attachment filename, we ensure the filename will
    change whenever the file contents do.
    
      has_attached_file :avatar,
        :styles => { :medium => "300x300>", :thumb => "100x100>" },
        :path => "users/:id/:attachment/:fingerprint-:style.:extension",
        :storage => :s3,
        :s3_headers => {'Expires' => 1.year.from_now.httpdate},
        :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
        :include_updated_timestamp => false
    
    This enables us to set far future expire headers so that browsers
    don't need to check for a newer version. If a change does occur,
    say because a user uploads a new avatar, the new filename will
    be rendered in your html and the cached version will be ignored.
    
    The example above will set Expires headers in S3. If you're using
    local storage you can configure your webserver to do something similar.
    
    We disable the timestamped query string because some proxies refuse
    to cache items with query strings.
    
    For more info on optimizing for caching:
    
    http://code.google.com/speed/page-speed/docs/caching.html
Something went wrong with that request. Please try again.