The partials are just HTML files, so standard cache practices work.
The Rails 3.1 asset pipeline makes this a breeze.
import mimetypes from datetime import datetime, timedelta from boto.s3.connection import S3Connection AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXXX' AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' BUCKET_NAME = 'mybucket' PREFIX = 'mydirectory' def main(): conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.get_bucket(BUCKET_NAME) key_list = bucket.get_all_keys(prefix=PREFIX) for key in key_list: content_type, unused = mimetypes.guess_type(key.name) if not content_type: content_type = 'text/plain' expires = datetime.utcnow() expires = expires.strftime("%a, %d %b %Y %H:%M:%S GMT") metadata = {'Expires': expires, 'Content-Type': content_type} print key.name, metadata key.copy(BUCKET_NAME, key, metadata=metadata, preserve_acl=True) if __name__ == '__main__': main()