Thanks for your comments, Ilya!
On 16.07.2013, 2:19 Ilya wrote:
Re, Opera: Checked with the team, this is an oversight on our part. Easy to fix, we just didn't whitelist the Opera UA. Re, non-JS handling and purging: can we discuss this a bit more? Is the concern that the "noscript" variable adds another variant to the cache?
My concern wasn't about Opera support specifically - it's fairly reasonable for systems designers to support some browsers and don't support the others, my concern was that it used User-agent and did not tell the frontend cache to vary on it - which will result in cache pollution. And even if it did, we rely on edge cache hit rate heavily, so varying cache on user agent would be pretty much like not caching at all for us.
Finally, speaking of caching... Historically, PageSpeed did the following: grab the HTML, rewrite resource links, cache-extend the optimized resources, mark the HTML as CC:private. The CC:private part is what allows pagespeed to regenerate the cache-extended resource filenames the moment they are changed. However, this means the HTML is not cacheable, which can (will) drive a lot more traffic to the origin servers. However, good news...
Our last week's release added support for HTML caching + purge functionality with upstream caches: https://developers.google.com/speed/pagespeed/module/downstream-caching
^ allows caching of partially rewritten content, as well as automatic purge + caching of optimized assets. The docs have an example for nginx and Varnish, but this should work out of the box with Squid and other caches too.
We have recently moved away from doing a lot of device detection in frontend caches which gave us a performance boost, would be pity to discard this.
Anyway, I've already started working on something I noticed in mod_pagespeed - a much better JS minification, expect updates soon:)