So a syntax error is now a "crash?". Web developers...
curl -w "\nTotal time: %{time_total}\nTime pretransfer: %{time_pretransfer}\nTime starttransfer: %{time_starttransfer}\nSize download: %{size_download}\nSpeed download: % {speed_download}\n" http://www.portent.com/
Total time: 2.629
Time pretransfer: 0.375
Time starttransfer: 1.400
Size download: 32730
Speed download: 12449.000
Ok. Not bad. Backend seems to be fine. But then I did the profiling in chrome. Some cdn requests are well past 25 seconds in the timeline. For a user, the site load takes more than 25 seconds. Your cdn is the bottleneck - you should work on fixing the cdn first.curl -w "\nTotal time: %{time_total}\nTime pretransfer: %{time_pretransfer}\nTime starttransfer: %{time_starttransfer}\nSize download: %{size_download}\n Speed download: %{speed_download}" www.example.com
- Write compact efficient CSS (arguably the current CSS file is far too big)
- Combine all CSS files
- Don't use question marks in a resource URL (.css?v=234)
- Write valid compact efficient HTML (duplicate meta tags like: ICBM, unnecessary tags like Google verify, inline CSS, depricated HTML: align="left")
- Dont use spacer divs (div clear="all" style="padding-top: 5px") for a better render flow
- Delay loading javascript to the body of your site.
- Combine javascript files
- Compress javascript and CSS files.
- asynchronous loading of web fonts and analytics code.
- Load all CSS files before JS files.
For the unoptimized 1000 images you can use a Wordpress plugin or roll your own batch script.
why? if you get the cache headers right, this is the way to go to let it cache forever. that's a nice thing.
(i don't really get why they do not use a caching proxy in front, there even is a wordpress plugin for varnish, so wordpress behind a caching proxy does not suck that much.)
unfortunately some suggestions are not possible with wordpress, so that alone could be a thing worth replacing.
There are still quite a few external scripts loading in the head that have the potential to block the page. The waterfall diagram from a test at webpagetest.org [1] shows a pretty dramatic example. It's not hard to load the Google PlusOne script async [2], and most of the other social network widgets can be lazy-loaded the same way.
[1] http://i.imgur.com/niDK1.png http://i.imgur.com/MLdj8.png [2] https://developers.google.com/+/plugins/+1button/#async-load
one funny thing pagespeed tells me is that google's own analytics ga.js needs a longer expire time than 2hrs, they should fix that especially for scripts loaded from common cdns (especially their own) since web authors have no control over this.
That cool curl command against rakeroutes.com:
Total time: 0.439
Time pretransfer: 0.175
Time starttransfer: 0.270
Size download: 17506
Speed download: 39888.000
That's off a regular ol' shared Dreamhost account.Aaaaand I think we're done here.
We've had situations where a site appeared broken to a subset of end users for weeks because we tweaked the look and feel, and the new logo (different size and look) was named logo.png just like the old logo...which had an "expires" header of about one month.
So even after clearing all local and server-side caches, some users were getting our new HTML with our old logo horribly jammed into it--dutifully being served from some unknown cache somewhere until it hit the "expires" time.