1. Make fewer HTTP requests
1. merge files into one, like css and js files
2. css sprites, use css background and one image to show multiple images
2. Avoid needless redirect
3. Make ajax cacheable ( use get request, and expires header, ajax is just http request )
4. Split components across domains to leverage concurrent download of browser ( browser limits the number of concurrent download threads )
5. Use CDN ( Content Delivery Network, rails uses asset pipeline to distribute resource files to sub-domain )
6. Gzip Components ( Accept-Encoding / Content-Encoding )
7. Use expires or Cache-Control header
8. Last-Modified / Etag ( Tell the server not to respond the resource if it is not changed )
9. Reduce Cookie size
10. Put stylesheets at the top of the page, so page can be rendered better
11. Put javascript at the bottom of the page, let html be interpreted first
12. Avoid CSS expressions
13. Compress css and JavaScript, in rails, use Assets Pipeline
14. Write better JavaScript
1. in jQuery, use id selector more
2. if use class selector, give a wrapper by select id
15. Avoid nested selectors in SASS
1. Nested selectors will prolong the precompile time of asset pipeline
2. Some old browsers like IE7, IE6 have limit on the nested depth of css, js file size
16. Lazy load document elements, especially the large images