Hello, here's some examples of caching, and expires config you can add to your apache instance to improve performance.
First I talk about caching stuff, then at the bottom there is some expires config for apache. Cheers, Caching. ============ You'll need to tweak settings quite a bit probably to get optimal performance. I volunteered to get this working before, but I was never sent the cheese shop apache config so I could test it. It's a very simple change, which can give good performance increases. CacheRoot "/var/tmp/proxy2/cheeseshop" CacheEnable disk / CacheSize 4000000 # CacheMinFileSize setting this so that 403 forbidden pages are not cached. CacheMinFileSize 400 CacheDirLevels 5 CacheDirLength 3 #CacheGcInterval 4 CacheMaxExpire 24 CacheLastModifiedFactor 0.1 CacheDefaultExpire 1 #CacheForceCompletion 100 You may need to add some last modified headers to the cheese shop output. Since it doesn't appear that is being done yet. It appears updates are only happening 10 times a day. So caching of the cheese shop should give a big increase. If someone wants to be my hands on the server for an hour or so, I could do any tweaking necessary. I'll look at making a patch to cheese shop to put in last modified headers. feedparser.py has pretty good last modified handling if someone wants to look there as an example. If someone could help me with the cheeseshop code, that'd be great. But if not, I'll dig into and do a complete patch. Here is the pseudo code for adding Last-Modified handling to cheese shop. def get_when_changed_header_from_http_client(request): if (request['If-Modified-Since']) // Split the If-Modified-Since (Netscape < v6 gets this wrong) modified_since = request['If-Modified-Since'].split(";") // Turn the client request If-Modified-Since into a timestamp modified_since = feedparser._parse_date(modified_since[0]) else: // Set modified since to 0 modified_since = 0 def get_date_for_most_recently_changed_part_of_page(): # would probably do a database look up to see when this page last changed. # would need select statements for each type of page. # eg, main page, single project page, category page etc. modified_since = get_when_changed_header_from_http_client(request) when_changed = get_date_for_most_recently_changed_part_of_page() if (when_changed <= modified_since): return header('HTTP/1.1 304 Not Modified'); how_long_pages_can_be_wrong_for = "10 minutes" set_expires_header(now() + how_long_pages_can_be_wrong_for) set_last_modified_header(when_changed) output_normal_page_stuff() return Expires ======== # Setting up the expires stuff should be ok, if changes to images, javascript, and css are not frequent. If they do change, then references to the external scripts should change too. # eg, add variables like style.css?r=801 that way browsers have to download new ones. # # Setting the expires stuff can make it so that web browsers don't even attempt to download stuff they already have. ExpiresActive On ExpiresByType image/gif A604800 ExpiresByType image/png A604800 ExpiresByType image/jpeg A604800 #ExpiresByType text/* A86400 ExpiresByType text/css A604800 ExpiresByType text/javascript A604800 ExpiresByType application/x-javascript A604800 ExpiresByType application/x-shockwave-flash A604800 _______________________________________________ Catalog-SIG mailing list Catalog-SIG@python.org http://mail.python.org/mailman/listinfo/catalog-sig