frontend usergroup rhein-main 1o.09.2014 walter ebert · pagespeed insights misst möglichkeiten...

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

Upload: hoangkhue

Post on 21-Jul-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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: Frontend Usergroup Rhein-Main 1o.09.2014 Walter Ebert ·  PageSpeed Insights misst Möglichkeiten zur Steigerung der Leistungsfähigkeit einer Seite in folgender Hinsicht:

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