SlideShare a Scribd company logo
1 of 40
RESPONSIVE IMAGES
IN A CMS
IS SENDING ALL PIXELS TO ALL DEVICES
THE "RIGHT ANSWER"?
June, 2014Duke Speer J and Beyond
THIS TALK IS NOT ABOUT
MAX-WIDTH: 100%;
June, 2014Duke Speer J and Beyond
WHY LISTEN TO THIS GUY?
NO REASON! – JOOMLA! SINCE 2008
JOOMLA! TRADEMARK / LICENSING TEAM
GOVERNANCE WORKING GROUP
MARKETING TEAM
JRD TEAM
June, 2014Duke Speer J and Beyond
June, 2014Duke Speer J and Beyond
June, 2014Duke Speer J and Beyond
PLAN
THE TERMINOLOGY
SET THE STAGE - THE NEED FOR SPEED
THE CMS CONTEXT
THE RESPONSIVE + ADAPTIVE APPROACH
June, 2014Duke Speer J and Beyond
RWD
June, 2014Duke Speer J and Beyond
RESPONSIVE TO WHAT?
June, 2014Duke Speer J and Beyond
“RESPONSIVE” OF RWD =
1. FLUID GRID
2. RESPONSIVE IMAGES
3. LAYOUT BREAKPOINTS
June, 2014Duke Speer J and Beyond
1. FLUID GRID
% EM/REM
June, 2014Duke Speer J and Beyond
2. RESPONSIVE IMAGES
.IMG {
MAX-WIDTH: 100%;
}
June, 2014Duke Speer J and Beyond
3. LAYOUT BREAKPOINTS
MEDIA QUERIES
DEFAULT FOR DUMB BROWSERS
IN DUMB PHONES – SMALL FILE
- UNDER 641 PX
- UNDER 1025 PX
- OVER 1024 PX
June, 2014Duke Speer
Joomla and
Beyond 14
MEDIA QUERIES
.CONTAINER {
BACKGROUND-IMAGE:URL(“PIC.JPG");
}
@MEDIA ALL AND (MAX-WIDTH: 600PX) {
.CONTAINER {
BACKGROUND-IMAGE:URL(“PIC-SM.JPG");
}
}
June, 2014Duke Speer
Joomla and
Beyond 14
MEDIA QUERIES
BACKGROUND V. FOREGROUND
MEDIA QUERY FOR IMAGES
IN ARTICLES AND BLOGS?
June, 2014Duke Speer
Joomla and
Beyond 14
THIS TALK IS NOT ABOUT
MAX-WIDTH: 100%;
June, 2014Duke Speer J and Beyond
THE NEED FOR SPEED
June, 2014Duke Speer J and Beyond
HE NEED FOR SPEED
June, 2014Duke Speer
E NEED FOR SPEED
HTTP://BLOG.KISSMETRICS.COM/WP-
ONTENT/UPLOADS/2011/04/LOADING-TIME.PDF
June, 2014Duke Speer
ED FOR SPEED
HTTP://BLOG.KISSMETRICS.COM/WP-
NT/UPLOADS/2011/04/LOADING-TIME.PDF
June, 2014Duke Speer
THE NEED FOR SPEED
HTTP://BLOG.KISSMETRICS.COM/WP-
CONTENT/UPLOADS/2011/04/LOADING-TIME.PDF
June, 2014Duke Speer J and Beyond
THE MAIN CONCERNS
DRAWN HEAVILY FROM:
HTTP://CSS-TRICKS.COM/WHICH-
RESPONSIVE-IMAGES-SOLUTION-SHOULD-
YOU-USE/
HTTPS://DOCS.GOOGLE.COM/SPREADSHEE
T/CCC?KEY=0AL0LI17FOL9DDDGXTFVORZF
PV3VCDHK2NTBMDVI2OXC#GID=0
June, 2014Duke Speer J and Beyond
VALID SUPPORTED HTML?
June, 2014Duke Speer J and Beyond
VALID SUPPORTED HTML?
<PICTURE ALT="DESCRIPTION">
<SOURCE SRC="SMALL.JPG">
<SOURCE SRC="MEDIUM.JPG" MEDIA="(MIN-WIDTH:
400PX)">
<SOURCE SRC="LARGE.JPG" MEDIA="(MIN-WIDTH: 800PX)">
</PICTURE>
<NOSCRIPT><IMG SRC=…></NOSCRIPT>
PICTUREFILL
June, 2014Duke Speer J and Beyond
JAVASCRIPT DEPENDENCY?
<PICTURE>
…
</PICTURE>
<NOSCRIPT><IMG SRC=…></NOSCRIPT>
PICTUREFILL
June, 2014Duke Speer J and Beyond
THIRD PARTY CDN?
SENCHA.IO
*REQUIRES IMG TAG ADJUSTMENT
June, 2014Duke Speer J and Beyond
SERVER-SIDE /
BROWSER SNIFFING?
WURFL DATABASE
WIRELESS UNIVERSAL RESOURCE FILE
3RD PARTY SERVICES
DEVICE ATLAS CLOUD, ET AL
June, 2014Duke Speer J and Beyond
BANDWIDTH TESTING?
FORESIGHT.JS (& HISRC)
June, 2014Duke Speer J and Beyond
CHANGING MARKUP / VIEWS?
<IMG SRC="200X100.PNG"
DATA-1X="400X200.PNG"
DATA-2X="800X400.PNG">
HISRC
June, 2014Duke Speer J and Beyond
ART DIRECTION?
June, 2014Duke Speer J and Beyond
June, 2014Duke Speer J and Beyond
24 SOLUTIONS – REALLY?
June, 2014Duke Speer J and Beyond
24 SOLUTIONS – REALLY?
THE CMS CONTEXT
RECONSTRUCTING THE IMAGE TAG?
YES:
HTTP://ARCHIVE.KEIRWHITAKER.COM/ARCHIVE
/AUTOMATIC-RESPONSIVE-IMAGES-IN-
WORDPRESS/
1000’S OF LEGACY ARTICLES
NO:
HTTP://ADAPTIVE-IMAGES.COM
June, 2014Duke Speer J and Beyond
LEGACY CONTENT?
June, 2014Duke Speer J and Beyond
ADAPTIVE TO THE RESCUE?
MATTHEW WILCOX
ONE HTACCESS FILE
ONE PHP FILE
A SINGLE LINE OF JAVASCRIPT
ADAPTIVE-IMAGES.COM
June, 2014Duke Speer J and Beyond
INSERT IN .HTACCESS
<IFMODULE MOD_REWRITE.C>
OPTIONS +FOLLOWSYMLINKS
REWRITEENGINE ON
# ADAPTIVE-IMAGES ----------------------------------------
# ADD ANY DIRECTORIES YOU WISH TO OMIT ON A NEW LINE, AS FOLLOWS:
# REWRITECOND %{REQUEST_URI} !SOME-DIRECTORY
REWRITECOND %{REQUEST_URI} !TEMPLATES
REWRITECOND %{REQUEST_URI} !MEDIA
# SEND ANY GIF, JPG, OR PNG REQUEST THAT IS NOT STORED INSIDE ONE OF THE ABOVE DIRECTORIES
# TO ADAPTIVE-IMAGES.PHP SO WE CAN SELECT APPROPRIATELY SIZED VERSIONS
REWRITERULE .(?:JPE?G|GIF|PNG)$ ADAPTIVE-IMAGES.PHP
# END ADAPTIVE-IMAGES ----------------------------------------
</IFMODULE>
June, 2014Duke Speer J and Beyond
NGINX: VIRTUAL HOST CFG
INSERT INSIDE SERVER BLOCK:
LOCATION ASSETS {
}
LOCATION AI-CACHE {
}
LOCATION / {
REWRITE .(?:JPE?G|GIF|PNG)$ /ADAPTIVE-IMAGES.PHP;
}
June, 2014Duke Speer J and Beyond
SET SETTINGS IN PHP FILE
/* CONFIG ------------------------------ */
$RESOLUTIONS = ARRAY(1382, 992, 768, 480); // THE RESOLUTION BREAK-POINTS TO USE (SCREEN
WIDTHS, IN PIXELS)
$CACHE_PATH = "AI-CACHE"; // WHERE TO STORE THE GENERATED RE-SIZED IMAGES. SPECIFY FROM
YOUR DOCUMENT ROOT!
$JPG_QUALITY = 80; // THE QUALITY OF ANY GENERATED JPGS ON A SCALE OF 0 TO 100
$SHARPEN = TRUE; // SHRINKING IMAGES CAN BLUR DETAILS, PERFORM A SHARPEN ON RE-SCALED
IMAGES?
$WATCH_CACHE = TRUE; // CHECK THAT THE ADAPTED IMAGE ISN'T STALE (ENSURES UPDATED SOURCE
IMAGES ARE RE-CACHED)
$BROWSER_CACHE = 60*60*24*7; // HOW LONG THE BROWSER CACHE SHOULD LAST (SECONDS,
MINUTES, HOURS, DAYS. 7DAYS BY DEFAULT)
/* END CONFIG ------ DON'T EDIT ANYTHING AFTER THIS LINE … -------------- */
June, 2014Duke Speer J and Beyond
INSERT JS IN <HEAD>*
<SCRIPT>DOCUMENT.COOKIE='RESOLUTION='
+MATH.MAX(SCREEN.WIDTH,SCREEN.HEIGHT)+("DEVICEPIXELRA
TIO" IN WINDOW ? ","+DEVICEPIXELRATIO : ",1")+';
PATH=/';</SCRIPT>
*MUST BE FIRST JAVASCRIPT EXECUTED IN HEAD.
June, 2014Duke Speer J and Beyond
LOW MAINTENANCE
WORKS WITH APACHE AND NGINX
/AI-CACHE CLEANOUT
June, 2014Duke Speer J and Beyond
QUESTIONS
DUKE.SPEER@COMMUNITY.JOOMLA.ORG
@DUKE3D
June, 2014Duke Speer J and Beyond

More Related Content

Viewers also liked

UNA 2015 - Taming The Trolls
UNA 2015 - Taming The TrollsUNA 2015 - Taming The Trolls
UNA 2015 - Taming The TrollsDuke Speer
 
Roberto Herrera actividad 1.1
Roberto Herrera actividad 1.1Roberto Herrera actividad 1.1
Roberto Herrera actividad 1.1Dario Herrera
 
Presentación apple. felix
Presentación apple. felixPresentación apple. felix
Presentación apple. felixFelixdiegonevadp
 
Open West 2014 - Lightroom One-click styling and uploading web images
Open West 2014 - Lightroom One-click styling and uploading web imagesOpen West 2014 - Lightroom One-click styling and uploading web images
Open West 2014 - Lightroom One-click styling and uploading web imagesDuke Speer
 
WordPress + Joomla! + Mautic, An Open Source Hat Trick
WordPress + Joomla! + Mautic, An Open Source Hat TrickWordPress + Joomla! + Mautic, An Open Source Hat Trick
WordPress + Joomla! + Mautic, An Open Source Hat TrickDuke Speer
 
These article
These articleThese article
These articleLucy Moy
 
TRW Credit repair program
TRW Credit repair programTRW Credit repair program
TRW Credit repair programKevin Foster
 
Joomla User Group, Bay Area - Lightroom to Website
Joomla User Group, Bay Area - Lightroom to WebsiteJoomla User Group, Bay Area - Lightroom to Website
Joomla User Group, Bay Area - Lightroom to WebsiteDuke Speer
 
One to one email seminar
One to one email seminarOne to one email seminar
One to one email seminarjoffoutlaw
 
Echosciences : mettre en réseau les acteurs & raconter la CST du territoire
Echosciences : mettre en réseau les acteurs & raconter la CST du territoireEchosciences : mettre en réseau les acteurs & raconter la CST du territoire
Echosciences : mettre en réseau les acteurs & raconter la CST du territoireMarion Sabourdy
 
Workshop : web, blogs & social network
Workshop : web, blogs & social networkWorkshop : web, blogs & social network
Workshop : web, blogs & social networkMarion Sabourdy
 
La veille sur Twitter - Réseau MUST
La veille sur Twitter - Réseau MUSTLa veille sur Twitter - Réseau MUST
La veille sur Twitter - Réseau MUSTMarion Sabourdy
 
Lyon science 2016 : Sciences en hashtags
Lyon science 2016 : Sciences en hashtagsLyon science 2016 : Sciences en hashtags
Lyon science 2016 : Sciences en hashtagsMarion Sabourdy
 

Viewers also liked (14)

UNA 2015 - Taming The Trolls
UNA 2015 - Taming The TrollsUNA 2015 - Taming The Trolls
UNA 2015 - Taming The Trolls
 
Roberto Herrera actividad 1.1
Roberto Herrera actividad 1.1Roberto Herrera actividad 1.1
Roberto Herrera actividad 1.1
 
Presentación apple. felix
Presentación apple. felixPresentación apple. felix
Presentación apple. felix
 
Open West 2014 - Lightroom One-click styling and uploading web images
Open West 2014 - Lightroom One-click styling and uploading web imagesOpen West 2014 - Lightroom One-click styling and uploading web images
Open West 2014 - Lightroom One-click styling and uploading web images
 
WordPress + Joomla! + Mautic, An Open Source Hat Trick
WordPress + Joomla! + Mautic, An Open Source Hat TrickWordPress + Joomla! + Mautic, An Open Source Hat Trick
WordPress + Joomla! + Mautic, An Open Source Hat Trick
 
Presentation1
Presentation1Presentation1
Presentation1
 
These article
These articleThese article
These article
 
TRW Credit repair program
TRW Credit repair programTRW Credit repair program
TRW Credit repair program
 
Joomla User Group, Bay Area - Lightroom to Website
Joomla User Group, Bay Area - Lightroom to WebsiteJoomla User Group, Bay Area - Lightroom to Website
Joomla User Group, Bay Area - Lightroom to Website
 
One to one email seminar
One to one email seminarOne to one email seminar
One to one email seminar
 
Echosciences : mettre en réseau les acteurs & raconter la CST du territoire
Echosciences : mettre en réseau les acteurs & raconter la CST du territoireEchosciences : mettre en réseau les acteurs & raconter la CST du territoire
Echosciences : mettre en réseau les acteurs & raconter la CST du territoire
 
Workshop : web, blogs & social network
Workshop : web, blogs & social networkWorkshop : web, blogs & social network
Workshop : web, blogs & social network
 
La veille sur Twitter - Réseau MUST
La veille sur Twitter - Réseau MUSTLa veille sur Twitter - Réseau MUST
La veille sur Twitter - Réseau MUST
 
Lyon science 2016 : Sciences en hashtags
Lyon science 2016 : Sciences en hashtagsLyon science 2016 : Sciences en hashtags
Lyon science 2016 : Sciences en hashtags
 

Similar to Responsive Images in a CMS - JandBEYOND 2014

Getting Started with Apache Geode
Getting Started with Apache GeodeGetting Started with Apache Geode
Getting Started with Apache GeodeJohn Blum
 
A Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvA Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvTechWell
 
ADEPT - HVAC Selection made easy
ADEPT - HVAC Selection made easyADEPT - HVAC Selection made easy
ADEPT - HVAC Selection made easyMohan Gulati
 
Using hapi plugins to version your API (hapiDays 2014)
Using hapi plugins to version your API (hapiDays 2014)Using hapi plugins to version your API (hapiDays 2014)
Using hapi plugins to version your API (hapiDays 2014)Dave Stevens
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattlegarrett honeycutt
 
Like Ruby on Rails for Node - the Sails js framework
Like Ruby on Rails for Node - the Sails js frameworkLike Ruby on Rails for Node - the Sails js framework
Like Ruby on Rails for Node - the Sails js frameworkStenio Ferreira
 
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...François-Guillaume Ribreau
 
Session State Caching with Spring
Session State Caching with SpringSession State Caching with Spring
Session State Caching with SpringVMware Tanzu
 
Drush Deployment Manager: Deployment Made Easy
Drush Deployment Manager: Deployment Made EasyDrush Deployment Manager: Deployment Made Easy
Drush Deployment Manager: Deployment Made EasyGerald Villorente
 
Paris Open Source Summit 2015 - Microsoft track on DevOps
Paris Open Source Summit 2015 - Microsoft track on DevOpsParis Open Source Summit 2015 - Microsoft track on DevOps
Paris Open Source Summit 2015 - Microsoft track on DevOpsSamuel Metias
 
DevOps dans la vraie vie : Retours d'expériences
DevOps dans la vraie vie : Retours d'expériencesDevOps dans la vraie vie : Retours d'expériences
DevOps dans la vraie vie : Retours d'expériencesMicrosoft
 
Plugins Wordpress et optimisation de sites dans l'écran
Plugins Wordpress et optimisation de sites dans l'écranPlugins Wordpress et optimisation de sites dans l'écran
Plugins Wordpress et optimisation de sites dans l'écranMXO | agence totale
 
Operationalizing Security Intelligence [ InfoSec World 2014 ]
Operationalizing Security Intelligence [ InfoSec World 2014 ]Operationalizing Security Intelligence [ InfoSec World 2014 ]
Operationalizing Security Intelligence [ InfoSec World 2014 ]Rafal Los
 
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!Atsushi Ando
 
Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation SlidesProject Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation SlidesSlideTeam
 
Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation Slides Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation Slides SlideTeam
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Zend by Rogue Wave Software
 
SpringOne 2GX 2015 - Fullstack Groovy developer
SpringOne 2GX 2015 - Fullstack Groovy developerSpringOne 2GX 2015 - Fullstack Groovy developer
SpringOne 2GX 2015 - Fullstack Groovy developerIván López Martín
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicagogarrett honeycutt
 

Similar to Responsive Images in a CMS - JandBEYOND 2014 (20)

Getting Started with Apache Geode
Getting Started with Apache GeodeGetting Started with Apache Geode
Getting Started with Apache Geode
 
A Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvA Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional Testingv
 
ADEPT - HVAC Selection made easy
ADEPT - HVAC Selection made easyADEPT - HVAC Selection made easy
ADEPT - HVAC Selection made easy
 
Using hapi plugins to version your API (hapiDays 2014)
Using hapi plugins to version your API (hapiDays 2014)Using hapi plugins to version your API (hapiDays 2014)
Using hapi plugins to version your API (hapiDays 2014)
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
 
Like Ruby on Rails for Node - the Sails js framework
Like Ruby on Rails for Node - the Sails js frameworkLike Ruby on Rails for Node - the Sails js framework
Like Ruby on Rails for Node - the Sails js framework
 
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
 
Session State Caching with Spring
Session State Caching with SpringSession State Caching with Spring
Session State Caching with Spring
 
Drush Deployment Manager: Deployment Made Easy
Drush Deployment Manager: Deployment Made EasyDrush Deployment Manager: Deployment Made Easy
Drush Deployment Manager: Deployment Made Easy
 
Paris Open Source Summit 2015 - Microsoft track on DevOps
Paris Open Source Summit 2015 - Microsoft track on DevOpsParis Open Source Summit 2015 - Microsoft track on DevOps
Paris Open Source Summit 2015 - Microsoft track on DevOps
 
DevOps dans la vraie vie : Retours d'expériences
DevOps dans la vraie vie : Retours d'expériencesDevOps dans la vraie vie : Retours d'expériences
DevOps dans la vraie vie : Retours d'expériences
 
Plugins Wordpress et optimisation de sites dans l'écran
Plugins Wordpress et optimisation de sites dans l'écranPlugins Wordpress et optimisation de sites dans l'écran
Plugins Wordpress et optimisation de sites dans l'écran
 
TT3161_Afonin
TT3161_AfoninTT3161_Afonin
TT3161_Afonin
 
Operationalizing Security Intelligence [ InfoSec World 2014 ]
Operationalizing Security Intelligence [ InfoSec World 2014 ]Operationalizing Security Intelligence [ InfoSec World 2014 ]
Operationalizing Security Intelligence [ InfoSec World 2014 ]
 
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!
Shifter Meetup West #1
 はじめてのShifter 実践マイグレーション!
 
Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation SlidesProject Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation Slides
 
Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation Slides Project Budget PowerPoint Presentation Slides
Project Budget PowerPoint Presentation Slides
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
 
SpringOne 2GX 2015 - Fullstack Groovy developer
SpringOne 2GX 2015 - Fullstack Groovy developerSpringOne 2GX 2015 - Fullstack Groovy developer
SpringOne 2GX 2015 - Fullstack Groovy developer
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
 

Recently uploaded

Research Assignment - NIST SP800 [172 A] - Presentation.pptx
Research Assignment - NIST SP800 [172 A] - Presentation.pptxResearch Assignment - NIST SP800 [172 A] - Presentation.pptx
Research Assignment - NIST SP800 [172 A] - Presentation.pptxi191686
 
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样ayvbos
 
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书AS
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样AS
 
一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理AS
 
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理AS
 
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...mikehavy0
 
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic ManagementBeyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Managementseank14
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC
 
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样Fi
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理F
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样ayvbos
 
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0APNIC
 
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样AS
 
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsrahman018755
 
一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理SS
 
Washington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers ShirtWashington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers Shirtrahman018755
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理F
 
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书c6eb683559b3
 

Recently uploaded (20)

Research Assignment - NIST SP800 [172 A] - Presentation.pptx
Research Assignment - NIST SP800 [172 A] - Presentation.pptxResearch Assignment - NIST SP800 [172 A] - Presentation.pptx
Research Assignment - NIST SP800 [172 A] - Presentation.pptx
 
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样
一比一原版(USYD毕业证书)悉尼大学毕业证原件一模一样
 
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
 
一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理
 
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理
一比一原版(Dundee毕业证书)英国爱丁堡龙比亚大学毕业证如何办理
 
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
 
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic ManagementBeyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样
一比一原版(UWE毕业证书)西英格兰大学毕业证原件一模一样
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0
APNIC Policy Roundup presented by Sunny Chendi at TWNOG 5.0
 
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样
一比一原版(Wintec毕业证书)新西兰怀卡托理工学院毕业证原件一模一样
 
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
 
一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理
 
Washington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers ShirtWashington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers Shirt
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
 
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
 

Responsive Images in a CMS - JandBEYOND 2014

  • 1. RESPONSIVE IMAGES IN A CMS IS SENDING ALL PIXELS TO ALL DEVICES THE "RIGHT ANSWER"? June, 2014Duke Speer J and Beyond
  • 2. THIS TALK IS NOT ABOUT MAX-WIDTH: 100%; June, 2014Duke Speer J and Beyond
  • 3. WHY LISTEN TO THIS GUY? NO REASON! – JOOMLA! SINCE 2008 JOOMLA! TRADEMARK / LICENSING TEAM GOVERNANCE WORKING GROUP MARKETING TEAM JRD TEAM June, 2014Duke Speer J and Beyond
  • 4. June, 2014Duke Speer J and Beyond
  • 5. June, 2014Duke Speer J and Beyond
  • 6. PLAN THE TERMINOLOGY SET THE STAGE - THE NEED FOR SPEED THE CMS CONTEXT THE RESPONSIVE + ADAPTIVE APPROACH June, 2014Duke Speer J and Beyond
  • 8. RESPONSIVE TO WHAT? June, 2014Duke Speer J and Beyond
  • 9. “RESPONSIVE” OF RWD = 1. FLUID GRID 2. RESPONSIVE IMAGES 3. LAYOUT BREAKPOINTS June, 2014Duke Speer J and Beyond
  • 10. 1. FLUID GRID % EM/REM June, 2014Duke Speer J and Beyond
  • 11. 2. RESPONSIVE IMAGES .IMG { MAX-WIDTH: 100%; } June, 2014Duke Speer J and Beyond
  • 12. 3. LAYOUT BREAKPOINTS MEDIA QUERIES DEFAULT FOR DUMB BROWSERS IN DUMB PHONES – SMALL FILE - UNDER 641 PX - UNDER 1025 PX - OVER 1024 PX June, 2014Duke Speer Joomla and Beyond 14
  • 13. MEDIA QUERIES .CONTAINER { BACKGROUND-IMAGE:URL(“PIC.JPG"); } @MEDIA ALL AND (MAX-WIDTH: 600PX) { .CONTAINER { BACKGROUND-IMAGE:URL(“PIC-SM.JPG"); } } June, 2014Duke Speer Joomla and Beyond 14
  • 14. MEDIA QUERIES BACKGROUND V. FOREGROUND MEDIA QUERY FOR IMAGES IN ARTICLES AND BLOGS? June, 2014Duke Speer Joomla and Beyond 14
  • 15. THIS TALK IS NOT ABOUT MAX-WIDTH: 100%; June, 2014Duke Speer J and Beyond
  • 16. THE NEED FOR SPEED June, 2014Duke Speer J and Beyond
  • 17. HE NEED FOR SPEED June, 2014Duke Speer
  • 18. E NEED FOR SPEED HTTP://BLOG.KISSMETRICS.COM/WP- ONTENT/UPLOADS/2011/04/LOADING-TIME.PDF June, 2014Duke Speer
  • 20. THE NEED FOR SPEED HTTP://BLOG.KISSMETRICS.COM/WP- CONTENT/UPLOADS/2011/04/LOADING-TIME.PDF June, 2014Duke Speer J and Beyond
  • 21. THE MAIN CONCERNS DRAWN HEAVILY FROM: HTTP://CSS-TRICKS.COM/WHICH- RESPONSIVE-IMAGES-SOLUTION-SHOULD- YOU-USE/ HTTPS://DOCS.GOOGLE.COM/SPREADSHEE T/CCC?KEY=0AL0LI17FOL9DDDGXTFVORZF PV3VCDHK2NTBMDVI2OXC#GID=0 June, 2014Duke Speer J and Beyond
  • 22. VALID SUPPORTED HTML? June, 2014Duke Speer J and Beyond
  • 23. VALID SUPPORTED HTML? <PICTURE ALT="DESCRIPTION"> <SOURCE SRC="SMALL.JPG"> <SOURCE SRC="MEDIUM.JPG" MEDIA="(MIN-WIDTH: 400PX)"> <SOURCE SRC="LARGE.JPG" MEDIA="(MIN-WIDTH: 800PX)"> </PICTURE> <NOSCRIPT><IMG SRC=…></NOSCRIPT> PICTUREFILL June, 2014Duke Speer J and Beyond
  • 25. THIRD PARTY CDN? SENCHA.IO *REQUIRES IMG TAG ADJUSTMENT June, 2014Duke Speer J and Beyond
  • 26. SERVER-SIDE / BROWSER SNIFFING? WURFL DATABASE WIRELESS UNIVERSAL RESOURCE FILE 3RD PARTY SERVICES DEVICE ATLAS CLOUD, ET AL June, 2014Duke Speer J and Beyond
  • 27. BANDWIDTH TESTING? FORESIGHT.JS (& HISRC) June, 2014Duke Speer J and Beyond
  • 28. CHANGING MARKUP / VIEWS? <IMG SRC="200X100.PNG" DATA-1X="400X200.PNG" DATA-2X="800X400.PNG"> HISRC June, 2014Duke Speer J and Beyond
  • 29. ART DIRECTION? June, 2014Duke Speer J and Beyond
  • 30. June, 2014Duke Speer J and Beyond 24 SOLUTIONS – REALLY?
  • 31. June, 2014Duke Speer J and Beyond 24 SOLUTIONS – REALLY?
  • 32. THE CMS CONTEXT RECONSTRUCTING THE IMAGE TAG? YES: HTTP://ARCHIVE.KEIRWHITAKER.COM/ARCHIVE /AUTOMATIC-RESPONSIVE-IMAGES-IN- WORDPRESS/ 1000’S OF LEGACY ARTICLES NO: HTTP://ADAPTIVE-IMAGES.COM June, 2014Duke Speer J and Beyond
  • 33. LEGACY CONTENT? June, 2014Duke Speer J and Beyond
  • 34. ADAPTIVE TO THE RESCUE? MATTHEW WILCOX ONE HTACCESS FILE ONE PHP FILE A SINGLE LINE OF JAVASCRIPT ADAPTIVE-IMAGES.COM June, 2014Duke Speer J and Beyond
  • 35. INSERT IN .HTACCESS <IFMODULE MOD_REWRITE.C> OPTIONS +FOLLOWSYMLINKS REWRITEENGINE ON # ADAPTIVE-IMAGES ---------------------------------------- # ADD ANY DIRECTORIES YOU WISH TO OMIT ON A NEW LINE, AS FOLLOWS: # REWRITECOND %{REQUEST_URI} !SOME-DIRECTORY REWRITECOND %{REQUEST_URI} !TEMPLATES REWRITECOND %{REQUEST_URI} !MEDIA # SEND ANY GIF, JPG, OR PNG REQUEST THAT IS NOT STORED INSIDE ONE OF THE ABOVE DIRECTORIES # TO ADAPTIVE-IMAGES.PHP SO WE CAN SELECT APPROPRIATELY SIZED VERSIONS REWRITERULE .(?:JPE?G|GIF|PNG)$ ADAPTIVE-IMAGES.PHP # END ADAPTIVE-IMAGES ---------------------------------------- </IFMODULE> June, 2014Duke Speer J and Beyond
  • 36. NGINX: VIRTUAL HOST CFG INSERT INSIDE SERVER BLOCK: LOCATION ASSETS { } LOCATION AI-CACHE { } LOCATION / { REWRITE .(?:JPE?G|GIF|PNG)$ /ADAPTIVE-IMAGES.PHP; } June, 2014Duke Speer J and Beyond
  • 37. SET SETTINGS IN PHP FILE /* CONFIG ------------------------------ */ $RESOLUTIONS = ARRAY(1382, 992, 768, 480); // THE RESOLUTION BREAK-POINTS TO USE (SCREEN WIDTHS, IN PIXELS) $CACHE_PATH = "AI-CACHE"; // WHERE TO STORE THE GENERATED RE-SIZED IMAGES. SPECIFY FROM YOUR DOCUMENT ROOT! $JPG_QUALITY = 80; // THE QUALITY OF ANY GENERATED JPGS ON A SCALE OF 0 TO 100 $SHARPEN = TRUE; // SHRINKING IMAGES CAN BLUR DETAILS, PERFORM A SHARPEN ON RE-SCALED IMAGES? $WATCH_CACHE = TRUE; // CHECK THAT THE ADAPTED IMAGE ISN'T STALE (ENSURES UPDATED SOURCE IMAGES ARE RE-CACHED) $BROWSER_CACHE = 60*60*24*7; // HOW LONG THE BROWSER CACHE SHOULD LAST (SECONDS, MINUTES, HOURS, DAYS. 7DAYS BY DEFAULT) /* END CONFIG ------ DON'T EDIT ANYTHING AFTER THIS LINE … -------------- */ June, 2014Duke Speer J and Beyond
  • 38. INSERT JS IN <HEAD>* <SCRIPT>DOCUMENT.COOKIE='RESOLUTION=' +MATH.MAX(SCREEN.WIDTH,SCREEN.HEIGHT)+("DEVICEPIXELRA TIO" IN WINDOW ? ","+DEVICEPIXELRATIO : ",1")+'; PATH=/';</SCRIPT> *MUST BE FIRST JAVASCRIPT EXECUTED IN HEAD. June, 2014Duke Speer J and Beyond
  • 39. LOW MAINTENANCE WORKS WITH APACHE AND NGINX /AI-CACHE CLEANOUT June, 2014Duke Speer J and Beyond