32
Above the fold Above the fold Frontend Usergroup Rhein-Main Frontend Usergroup Rhein-Main 1o.09.2014 1o.09.2014 Walter Ebert Walter Ebert

Above the fold content

Embed Size (px)

DESCRIPTION

Vortrag für die Frontend Usergroup RheinMain

Citation preview

Page 1: Above the fold content

Above the fold Above the fold

Frontend Usergroup Rhein-Main Frontend Usergroup Rhein-Main 1o092014 1o092014

Walter EbertWalter Ebert

httpboagworldcomdevare-media-queries-the-answer-to-the-fold

httpsdevelopersgooglecomspeeddocsinsightsabout

PageSpeed Insights misst Moumlglichkeiten zur Steigerung der Leistungsfaumlhigkeit einer Seite in folgender Hinsicht

Erforderliche Zeit zum Laden des ohne Scrollen sichtbaren Inhalts Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum Rendern des ohne Scrollen sichtbaren Inhalts durch den Browser

Erforderliche Zeit zum vollstaumlndigen Laden der Seite Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum vollstaumlndigen Rendern der Seite durch den Browser

Was Zur Hoelle

httpworkingdraftde176httpworkingdraftde176

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 2: Above the fold content

httpboagworldcomdevare-media-queries-the-answer-to-the-fold

httpsdevelopersgooglecomspeeddocsinsightsabout

PageSpeed Insights misst Moumlglichkeiten zur Steigerung der Leistungsfaumlhigkeit einer Seite in folgender Hinsicht

Erforderliche Zeit zum Laden des ohne Scrollen sichtbaren Inhalts Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum Rendern des ohne Scrollen sichtbaren Inhalts durch den Browser

Erforderliche Zeit zum vollstaumlndigen Laden der Seite Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum vollstaumlndigen Rendern der Seite durch den Browser

Was Zur Hoelle

httpworkingdraftde176httpworkingdraftde176

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 3: Above the fold content

httpsdevelopersgooglecomspeeddocsinsightsabout

PageSpeed Insights misst Moumlglichkeiten zur Steigerung der Leistungsfaumlhigkeit einer Seite in folgender Hinsicht

Erforderliche Zeit zum Laden des ohne Scrollen sichtbaren Inhalts Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum Rendern des ohne Scrollen sichtbaren Inhalts durch den Browser

Erforderliche Zeit zum vollstaumlndigen Laden der Seite Zeitdauer vom Anfordern einer neuen Seite durch einen Nutzer bis zum vollstaumlndigen Rendern der Seite durch den Browser

Was Zur Hoelle

httpworkingdraftde176httpworkingdraftde176

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 4: Above the fold content

Was Zur Hoelle

httpworkingdraftde176httpworkingdraftde176

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 5: Above the fold content

httpworkingdraftde176httpworkingdraftde176

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 6: Above the fold content

httpwwwfrontend-rheinmaindehttpwwwfrontend-rheinmainde

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 7: Above the fold content

Subjektive Wahrnehmungder Ladegeschwindigkeit

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 8: Above the fold content

httpwwwwebpagetestorgresult121212_RW_ED4

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 9: Above the fold content

httpswwwyoutubecomwatchv=0wgDGTgOPdsampfeature=youtubeampt=9m55s

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 10: Above the fold content

httpsdevelopersgooglecomspeedpagespeedinsightsurl=govdatade

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 11: Above the fold content

Critical CSSltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 12: Above the fold content

httpcss-trickscomauthoring-critical-fold-csshttpcss-trickscomauthoring-critical-fold-css

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 13: Above the fold content

Critical ContentltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt Critical CSS ltstylegt ltheadgt ltbodygt ltp class=criticalgtAbove the fold contentltpgt lt-- the fold --gt ltphp flush() gt

ltpgt Lorizzle cool dolizzle sit amizzle ltpgt

ltlink rel=stylesheet type=textcss href=uncriticalcss gt ltbodygtlthtmlgt

httpswwwfacebookcomnotesfacebook-engineeringbigpipe-pipelining-web-pages-for-high-performance389414033919

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 14: Above the fold content

Javascript asynchron laden

ltscript src=examplecomscriptsjs async defergt

httpswwwigvitacom20140520script-injected-async-scripts-considered-harmful

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 15: Above the fold content

Hack komplettes CSS einbetten

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltstylegt ltphp echo file_get_contents(pathtostylecss) gt ltstylegt ltheadgt ltbodygt ltpgt Lorizzle cool dolizzle sit amizzle ltpgt ltbodygtlthtmlgt

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 16: Above the fold content

Idee CSS in localStorage

ltDOCTYPE htmlgtlthtmlgt ltheadgt ltscriptgt var css = body color 333 background fff documentwrite(ltstylegt + css + ltstylegt) ltscriptgt ltheadgt ltbodygt ltpgtLorizzle cool dolizzle sit amizzle ltpgt ltscriptgt windowlocalStoragesetItem(css css) ltscriptgt ltbodygtlthtmlgt

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 17: Above the fold content

LocalStorage-Support

ltscriptgtvar useLocalStorage = falseif (localStorage in window) useLocalStorage = trueltscriptgt

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 18: Above the fold content

CSS ladenltscriptgtvar css = false version = falseltphp$file = pathtostylecss$stat = stat($file)$version = (string) $stat[mtime]if (empty($_COOKIE[version]) or $_COOKIE[version] == $version)

echo version = $version $css = file_get_contents($file) $css = str_replace( array(r n) array( x27x22) trim($css) ) echo css = $cssgtltscriptgt

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 19: Above the fold content

CSS ausgebenltscriptgtif (css ampamp useLocalStorage) css = windowlocalStoragegetItem(css)

if (css) documentwrite(ltstylegt + css + ltstylegt) else documentwrite(ltlink href=uritostylecss + rel=stylesheet type=textcss gt)ltscriptgt

ltnoscriptgtltlink href=uritostylecss rel=stylesheet type=textcss gtltnoscriptgt

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 20: Above the fold content

httpwalterebertcomplaygroundwpocriticalcsshttpwalterebertcomplaygroundwpocriticalcss

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 21: Above the fold content

Speichern

ltscriptgtif (useLocalStorage ampamp version ampamp css)

var d = new Date() dsetTime(dgetTime() + (302460601000) ) documentcookie=version= + version + + expires= + dtoGMTString() + path=

windowlocalStoragesetItem(css css)

ltscriptgt

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 22: Above the fold content

Inline-Bilder mit base64

ltdiv id=logogt ltimg src=dataimagepngbase64iVBORwhellip alt=Logo gtltdivgt

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 23: Above the fold content

SVG mit PNG-Fallback

ltdiv id=logogt ltsvggt ltimage src=logopng gt ltsvggt ltdivgt

httpwalterebertcomplaygroundhtml5img-svg

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 24: Above the fold content

httpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answerhttpcalendarperfplanetcom2011why-inlining-everything-is-not-the-answer

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 25: Above the fold content

httpsdevelopersgooglecomspeedpagespeedmodhttpwwwyoutubecomwatchv=uR5urTx8S4E

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 26: Above the fold content

Media Queries

CSSmedia (max-height600px)

JavascriptwindowmatchMedia((max-height600px))

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 27: Above the fold content

httpresponsiveimagesorg

ltpicturegt

ltsource media=(min-height 600px) srcset=bigjpggt ltsource srcset=smalljpggt ltimg src=fallbackjpg gt

ltpicturegt

ltimg

src=fallbackjpg

srcset=smalljpg 600h

largejpg

sizes=(max-height 480px) 50vh 100vh gt

Responsive Images

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
Page 28: Above the fold content

Walter Ebert

wltrdwalterebertde

slidesharenetwalterebert

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32