the server side of responsive web design

90
The Server-side of Responsive Design Dave Olsen, @dmolsen WVU University Relations - Web Breaking Development, October 2013

Upload: dave-olsen

Post on 08-Sep-2014

13 views

Category:

Technology


2 download

DESCRIPTION

Responsive web design has become an important tool for front-end developers as they develop mobile-optimized solutions for clients. Browser-detection has been an important tool for server-side developers for the same task for much longer. Unfortunately, both techniques have certain limitations. Depending on project requirements, team make-up and deployment environment combining these two techniques might lead to intriguing solutions for your organization. We'll discuss when it makes sense to take this extra step and we'll explore techniques for combining server-side technology, like server-side feature-detection, with your responsive web designs to deliver the most flexible solutions possible.

TRANSCRIPT

Page 1: The Server Side of Responsive Web Design

The Server-side of Responsive DesignDave Olsen, @dmolsenWVU University Relations - WebBreaking Development, October 2013

Page 2: The Server Side of Responsive Web Design

“The Server-side?”

Page 3: The Server Side of Responsive Web Design

Was This Your First Reaction?

http://flic.kr/p/xdsh

Page 4: The Server Side of Responsive Web Design

“You’re a Smartphone Browser!”

http://xkcd.com/869/

Page 5: The Server Side of Responsive Web Design

AssumptionsOne small piece of data.

A Lot Riding on a Part of a Single String

Page 6: The Server Side of Responsive Web Design

The Responsive Age

Page 7: The Server Side of Responsive Web Design

Responsive Design Server-sidevs.

http://flic.kr/p/6JVLMd

Page 8: The Server Side of Responsive Web Design

One...

http://flic.kr/p/5pGcyx

Why Be Responsive?

Page 9: The Server Side of Responsive Web Design

Set of content.

One...URL.

Why Be Responsive?

Set of mark-up.Deployment.

Page 10: The Server Side of Responsive Web Design

We Have to Be futurefriend.ly

Page 11: The Server Side of Responsive Web Design

balloons

http://flic.kr/p/h6McT

Time to Party!

Page 12: The Server Side of Responsive Web Design

http://flic.kr/p/8x6b8X

“Not so fast, my friends...”

Page 13: The Server Side of Responsive Web Design

brad’s iceberg

© Brad Frost

Page 14: The Server Side of Responsive Web Design

brad’s iceberg

© Brad Frost© Brad Frost

Page 15: The Server Side of Responsive Web Design

AssumptionsThis shit can be complicated.

False Sense of Security?

Page 16: The Server Side of Responsive Web Design

Responsive Design Server-sidevs.Maybe it’s not so simple...

http://flic.kr/p/6JVLMd

Page 17: The Server Side of Responsive Web Design

Responsive Design Server-side&Maybe instead it could be...

http://flic.kr/p/6JVLMd

Page 18: The Server Side of Responsive Web Design

Especially if we can be future-friendly on the server-side too.

A New Hope?

Page 19: The Server Side of Responsive Web Design
Page 20: The Server Side of Responsive Web Design

http://flic.kr/p/agyEkb

Page 21: The Server Side of Responsive Web Design

How do we combine them?

Page 22: The Server Side of Responsive Web Design

Responsive Web Design +Server Side ComponentsI have no idea what becomes of the W, D, or C

What is RESS?

RESS

Page 23: The Server Side of Responsive Web Design

In a nutshell, RESS combines adaptive layouts with server side component (not full page) optimization.

- Luke Wroblewski @lukew

http://www.lukew.com/ff/entry.asp?1392

What is RESS?

Page 24: The Server Side of Responsive Web Design

Swap HTML components (from those avail on server) in a RWD to further optimize page/app.

- Luke Wroblewski @lukew

What is RESS?

https://twitter.com/lukew/status/275678033661272064

Page 25: The Server Side of Responsive Web Design

http://flic.kr/p/9UmsCJ

Responsive Design is Our Baseline

Page 26: The Server Side of Responsive Web Design

Server-side components are an enhancement.

To Be Absolutely Clear

Provide the good default/fallback with “RE” and optimize the experience with “SS”.

Page 27: The Server Side of Responsive Web Design

Simple Example: Swapping an Image

Mobile View Desktop View

http://www.lukew.com/ff/entry.asp?1392

Server-side Swapping...

Page 28: The Server Side of Responsive Web Design

http://www.lukew.com/ff/entry.asp?1392

index.html

userimg.html

mobile_userimg.html

Simple Example: Swapping an Image

Server-side Swapping...

Page 29: The Server Side of Responsive Web Design

http://www.lukew.com/ff/entry.asp?1392

<img class="biguserimage" height="300" width="300"

alt="{{ username }}" src="{{ biguserimg }}">

Simple Example: Swapping an Image

Server-side Swapping...

<img class="userimage" width="50" height="50"

alt="{{ username }}" src="{{ smluserimg }}">

Page 30: The Server Side of Responsive Web Design

Ultimately, RESS is a Scalpel

Page 31: The Server Side of Responsive Web Design

DES

KTO

P W

EBTA

BLET

WEB

MO

BILE WEB

It’s All One Web

Page 32: The Server Side of Responsive Web Design

When Does RESS Make Sense?

http://flic.kr/p/b6WaSP

Page 33: The Server Side of Responsive Web Design

• If you want layout adjustments across devices.

• And optimization at the component level to increase performance or tune user experience.

• You trust server-side device detection with sensible defaults.

http://www.lukew.com/ff/entry.asp?1509

RESS Works Well If...

- Luke Wroblewski @lukew

Page 34: The Server Side of Responsive Web Design

My Experience On When It Makes Sense

• Team has a mix of skills.

• Team members are not strong in the skills necessary for complex RWD interactions.

• Design elements need to be swapped based on known functionality or performance issues.

Page 35: The Server Side of Responsive Web Design

The average weight of a home page today.

Source: HTTP Archive

Images JavaScript

Flash

HTM

LCSSOther

77%

1.5 MB

RESS Works Well If...

Page 36: The Server Side of Responsive Web Design

It’s a Tool in the Toolbox

Page 37: The Server Side of Responsive Web Design

http://flic.kr/p/7FyCB2

RESS Can Be A Bridge

Page 38: The Server Side of Responsive Web Design

So how would we implement?

http://flic.kr/p/5ATc7g

How Do We Implement RESS?

Page 39: The Server Side of Responsive Web Design

Responsive Web Design is “easy”

http://flic.kr/p/4YM8

Skipping Responsive Design...

Page 40: The Server Side of Responsive Web Design

Server-side Driven

Two Types of RESS

#1

Client-side Driven#2

Page 41: The Server Side of Responsive Web Design

Server-side Driven

Two Types of RESS

#1

Page 42: The Server Side of Responsive Web Design

Two Possible Solutions

Server-sideSolutions

http://flic.kr/p/9jatna

Page 43: The Server Side of Responsive Web Design

Browser Detection#1

Two Server-Side Options

Page 44: The Server Side of Responsive Web Design

Old dog

http://flic.kr/p/bWQicm

Been Around a Long Time

Page 45: The Server Side of Responsive Web Design

82% of the Alexa 100 top sites use some form of server-side mobile device detection to serve content on their main website entry point.

- Ronan Cremin @xbs

http://www.circleid.com/posts/20120111_analysis_of_server_side_mobile_web_detection/

It’s Used A Lot

Page 46: The Server Side of Responsive Web Design

ScientiaMobileDeviceAtlas

51Degrees.mobi

There Are Robust Solutions

Page 47: The Server Side of Responsive Web Design

A Word About Open Source

Page 48: The Server Side of Responsive Web Design

http://flic.kr/p/6RVLY2

Is it an Arms Race?

Page 49: The Server Side of Responsive Web Design

Is it an Arms Race?

Yes, but so is everything in web development.

just look at the Modernizr issue tracker

Page 50: The Server Side of Responsive Web Design

Server-side Feature Detection#2

Two Server-Side Options

Page 51: The Server Side of Responsive Web Design

Infancy

http://flic.kr/p/7B7uyp

Implementations Are In Their Infancy...

Page 52: The Server Side of Responsive Web Design

The Idea Has Been Around for Awhile

http://flic.kr/p/d34hh3

Page 53: The Server Side of Responsive Web Design

Taking a Cue From Front-end Dev

Page 54: The Server Side of Responsive Web Design

Modernizr Server

Page 55: The Server Side of Responsive Web Design

Can the Server Be Future-Friendly?

Page 56: The Server Side of Responsive Web Design

Server-side Feature Detection Options

Server-side Breakpoints#1

Page 57: The Server Side of Responsive Web Design

320px

640px

960px

#1: Server-side Breakpoints

Page 58: The Server Side of Responsive Web Design

Simple Example: Setting a file path based on window.innerWidth

<script type="text/javascript">

function writeCookie(name, value) { //cookie code }

// store the innerWidth of the window in a cookie writeCookie("RESS", window.innerWidth);

</script>

http://www.netmagazine.com/tutorials/getting-started-ress

#1: Server-side Breakpoints

Page 59: The Server Side of Responsive Web Design

<?php

// grab the cookie value $screenWidth = $_COOKIE[‘RESS’];

// set the img path var if ($screenWidth <= 320) { $imgPath = “320”; } else if ($screenWidth < 960) { $imgPath = “640”; } else { $imgPath = “960”; }

// print out our image link print “<img src=‘/rwd/images/”.$imgPath.”/car.jpg’ alt=‘Car’ />”;

?>

Simple Example: Setting a file path based on window.innerWidth

http://www.netmagazine.com/tutorials/getting-started-ress

#1: Server-side Breakpoints

Page 60: The Server Side of Responsive Web Design

Server-side Feature Detection Options

Robust Feature Detection#2

Page 61: The Server Side of Responsive Web Design

...feature tests should only ever be run when you don’t know the UA you’re running in.

- Alex Russell, Jan. 2011 @slightlylate

#2: Robust Feature Detection

http://infrequently.org/2011/01/cutting-the-interrogation-short/

Page 62: The Server Side of Responsive Web Design

#2: Robust Feature Detection

Page 63: The Server Side of Responsive Web Design

<?php

// require Detector to identify browser & populate $ua require("lib/Detector/Detector.php");

$html5Embed = "<iframe {...} ></iframe>"; $simpleLink = "Your browser doesn't appear to support HTML5. {...}";

// use the $ua properties to switch if ($ua->video->h264 || $ua->video->webm) { ! print $html5Embed; } else {! print $simpleLink;! }

?>

Simple Example: Inserting a video link

http://detector.dmolsen.com/demo/ytembed/

#2: Robust Feature Detection

Page 64: The Server Side of Responsive Web Design

Complicated Example: Templates Using Detector & Mustache

#2: Robust Feature Detection

http://ress.dmolsen.com/

Page 65: The Server Side of Responsive Web Design

DES

KTO

P W

EBM

-AD

VAN

CED

ress.dmolsen.com

MO

BILE BA

SIC

Page 66: The Server Side of Responsive Web Design

Example: West Virginia University

Page 67: The Server Side of Responsive Web Design

Example: West Virginia University

Goals/Issues:

Implementation:

•Modifying the carousel for retina & code•Modify mark-up for IE 7 & 8•Provide a non-responsive baseline•Deliver the “correct” mark-up•Fast turnaround

•Detector for classification•Mustache for templates•YAML for data storage

Page 68: The Server Side of Responsive Web Design

{ { "mobile-advanced-ie": { "isMobile": true, "browser": "IE Mobile" }, "mobile-advanced-retina": { "isMobile": true, "hirescapable": true }, "mobile-advanced": { "isMobile": true, "features": [ "csstransforms" ] }, "mobile-basic": { "isMobile": true }, "ie": { "browser": "IE", "major": "7||8" }}

Hybrid Example: Mixing Types of Detection

Example: West Virginia University

Page 69: The Server Side of Responsive Web Design

DES

KTO

P W

EBM

-AD

VAN

CED

wvu.edu

MO

BILE BA

SIC

Page 70: The Server Side of Responsive Web Design

Example: West Virginia University

Default MobileAdvanced

MobileRetina

MobileBasic

0K

175K

350K

525K

700K

Total Images JS CSS HTML0K

175K

350K

525K

700K

Total Images JS CSS HTML0K

175K

350K

525K

700K

Total Images JS CSS HTML0K

175K

350K

525K

700K

Total Images JS CSS HTML

Page 71: The Server Side of Responsive Web Design

Example: West Virginia University

0%

25%

50%

75%

100%

2011 2012 2013

Mobile Traffic on First Day of Fall Semester

Page 72: The Server Side of Responsive Web Design

Client-side Driven

Two Types of RESS

#2

Page 73: The Server Side of Responsive Web Design

Client-side: Cutting the Mustard

Page 74: The Server Side of Responsive Web Design

Client-side Example: An Event Apart

Page 75: The Server Side of Responsive Web Design

Client-side Example: An Event Apart

$(window).bind(“enterBreakpoint1”, function () { if (smallLoaded == false) { $("#event-thumbnail-holder").load("/main/small-heroes", function () { ... }); };});

Example: Fetching Content by Breakpoint

source bastardized from http://aneventapart.com

$(window).bind(“enterBreakpoint600”, function () { if (bigLoaded == false) { if ($("#slide-show").length > 0) { $("#slide-show").load("/main/heroes", function () { ... }); }; };});

Page 76: The Server Side of Responsive Web Design

Client-side Example: An Event Apart

Page 77: The Server Side of Responsive Web Design

600P

X+

LESS

TH

AN

600

PX

aneventapart.com

Page 78: The Server Side of Responsive Web Design

Client-side Example: An Event Apart

Less than 600pxGreater than 600px

0K

125K

250K

375K

500K

Total Images JS CSS HTML XHR Fonts0K

125K

250K

375K

500K

Total Images JS CSS HTML XHR Fonts

They get bonus points for also using lazy loading.

Page 79: The Server Side of Responsive Web Design

Challenges for RESS

http://flic.kr/p/9wF2S

Page 80: The Server Side of Responsive Web Design

RESS isn’t a silver bullet.anymore than RWD is

Challenges for RESS

Page 81: The Server Side of Responsive Web Design

Server-side feature detection can be spoofed.

Challenges for RESS

Page 82: The Server Side of Responsive Web Design

Requires server-side languages.

Challenges for RESS

if you go the server-side route

Page 83: The Server Side of Responsive Web Design

Data needs to be strongly separated from layout.

Challenges for RESS

Page 84: The Server Side of Responsive Web Design

Need to properly setcache headers.

Challenges for RESS

Page 85: The Server Side of Responsive Web Design

Are Client-Hints the Future of RESS?

Page 86: The Server Side of Responsive Web Design

http://flic.kr/p/c74N1

Page 87: The Server Side of Responsive Web Design
Page 88: The Server Side of Responsive Web Design

http://flic.kr/p/agyEkb

Page 89: The Server Side of Responsive Web Design

Questions or comments?

Page 90: The Server Side of Responsive Web Design

Dave OlsenProfessional TechnologistWest Virginia University

@dmolsendmolsen.com

Thanks for Listening