[whatwg] RWD Heaven: if browsers reported device capabilities in a request header
Boris Zbarsky
bzbarsky at MIT.EDU
Mon Feb 6 08:58:55 PST 2012
On 2/6/12 11:27 AM, Matthew Wilcox wrote:
> I disagree. Screen size is at times *exactly* what is needed, as it *is*
> constant throughout the experience.
No. It's just not, for at least two reasons:
1) Screen sizes are reported to the page in CSS pixels, and the number
of CSS pixels per device pixel is not an invariant (e.g. it changes on
zoom in some browsers).
2) Devices (including laptops) can be docked and otherwise have
external screens connected to them.
Point 1 above means that the user zooming your page will change the
"screen size" as perceived by the page.
> *Viewport* size is what we shouldn't be using
Viewport size has the additional constraint that viewports can also be
resized by users. But you shouldn't be "using" any of these. Depending
on what you're "using" it for, of course... What _are_ you trying to
use it for?
> The problem with using viewport instead of device size is client-side
> caching. It completely breaks things. As follows:
>
> 1) The user requests the site with a viewport at less than the device
> screen size.
> 2) The user browses around for a bit on a few pages.
> 3) The user maximises their browser.
> 4) All of the images now in the browser cache are too small.
>
> How does the client know to re-request all those pre-cached images,
> without making an arduous manual JS-reliant cache manifest? Or without
> turning off caching entirely?
If we posit that we're putting the viewport size information in an HTTP
header, a server would simply send the appropriate Vary header in its
response. Then the client would know that its cached content is no
longer valid if the request header it's about to send doesn't match what
it sent when it received the cached content. So this is not a problem
per se.
The problem, again, comes with viewport and screen size changes while a
page is loaded, not across page navigations.
> The solution is to send an image that is as large as the device will
> ever need
Whatever that means. How would you even determine this?
> Yes, this isn't ideal, but it solves the problem and it solves it very
> well for small devices whilst maintaining client-side caching. There's
> very little difference in file weight between an image 320px wide and
> one 480px wide, so the overhead of supporting landscape even if you're
> currently only at portrait isn't anywhere near as great as un-negotiated
> content.
Except you get screwed (or more precisely show a crappy grainy image) if
the user actually zooms in on their device, no?
-Boris
More information about the whatwg
mailing list