Figure 3 Interactive user productivity versus computer response time for human-intensive interactions for system A E 600 3 - T 7 w z E 500 - U E w E - > > - - 400 - 3 n F 2 300 - 200 - 100 - 0 - 0 -" INTERACTIVE USER PRODUCTIVITY (IUP) - HUMAN-INTENSIVE COMPONENT OF IUP A MEASURED DATA (HUMAN-INTENSIVE " COMPONENT) 0 0 0 0 I 1 I I I 1 2 3 4 5 COMPUTER RESPONSE TIME (SI A. J. Thadhani, IBM Systems Journal 20 (4), 1981 Productivity and response time
2.2s 15.4% reduction in page load time increase in conversion rate https://blog.mozilla.org/metrics/2010/04/05/firefox-page-load-speed-%E2%80%93-part-ii/
Europe Amsterdam (2) Dublin Frankfurt (2) London (2) Madrid Milan Paris (2) Stockholm South America Sao Paulo North America Ashburn, VA (2) Dallas, TX (2) Hayward, CA Jacksonville, FL Los Angeles, CA (2) Miami, FL Newark, NJ New York, NY (3) Palo Alto, CA Seattle, WA San Jose, CA South Bend, IN St. Louis, MO CloudFront Edge Locations
Static and dynamic content Cache dynamic pages (search results). Use query strings or cookie for cache keys. Network and Path optimizations accelerate even unique content.
Small things, loosely coupled. Do one thing, and do it well. The Unix Way. Take a look at the Unicorn and Rainbows approach. Asynchronous be default (where possible).
Best practices. Assume cold cache latency in application architecture. Set appropriate time-to-live. Batch requests rather than sequential single. Architect for cache failure.
Provisioned throughput is consistent. Consistent, predictable performance. Relational databases with RDS. NoSQL stores with DynamoDB. Relational & NoSQL with EC2 and EBS.
Provisioned IOPS with EBS volumes. Predictable, high performance for IO intensive workloads. 2000 IOPS per volume. Stripe volumes for additional IO. Deliver within 10% of the performance, 99.9% of the time.
High bandwidth networking cg1.4xlarge, cc2.8xlarge, hi1.4xlarge, hs1.8xlarge and cr1.8xlarge run on non-blocking, 10 gigabit networking. Not EBS-Optimized, but can be used with provisioned IOPS volumes.
1. Make fewer HTTP requests. 2. Use a content delivery network. 3. Add an expires header. 4. GZIP components. 5. Put style sheets at the top. 6. Put scripts at the bottom. 7. Avoid CSS expressions. 8. Make JavaScript and CSS External. 9. Reduce DNS lookups. 10. Minify Javascript. 11. Avoid redirects. 12. Remove duplicate scripts. 13. Configure ETags. 14. Make AJAX cacheable. http://stevesouders.com/hpws/rules.php 14 rules for faster loading web sites