Many of these are derived from YSlow
* Inspect images to try to get the best quality in the least space
* Reduce number of HTTP requests, even if downloading a larger file (such as all of dojo's widgets) is more code than required
* Use a CDN
* Adjust caching to cache as much as possible at the client, using ETags. CSS, images, icons, javascript, HTML cached.
* Use unexpand to remove extra spaces, this can greatly reduce file size
* Cache templates/ini content where practical
* Write CSS carefully, ensuring only design images, not content images are in the CSS files. Use page specific CSS if images are only used on one page.
* Use HTML where appropriate, since it can be cached at the browser level.
* Use compression if necessary.
* Reduce the amount of data transfered. For example, I had to search text files. Instead of sending the whole file, then using javascript - I used grep and only sent the hits (which worked for that application).
* Reuse common files from a single server, a mini or local CDN.