SlideShare a Scribd company logo
1 of 21
Download to read offline
Image Optimisation
for WebApps
Nil Portugués Caldero6th October 2014
Existing solutions
Used either during dev or production deploy stage:
● Symfony2: Assetic Bundle
● NodeJS: github.com/gruntjs/grunt-contrib-imagemin
● Ruby/RoR: github.com/toy/image_optim
Existing solution problems
● Not a real-time solution.
● Waiting for images does not scale. Slow deployment.
● No strategy!
Existing requirements
Device diversity: phone, tablet, PC require a strategy.
● Different presentation layers (media queries). Needs
Strategy.
● Different design requirements. Needs Strategy.
● Fast multi-device UX. Needs Strategy.
Is a consistency model used in distributed computing to
achieve high availability that informally guarantees that, if no
new updates are made to a given data item, eventually all
accesses to that item will return the last updated value.
Source: Wikipedia
Strategy: eventual consistency
Image Service
Send image to optimise to Queue
(if image is not in database)
Model
Extract and fetch optimized images
(if any) for the current View
Solution: Conceptual
Queue with Image Optimisation workers
Controller
Use the best available image.
View
Renders HTML
Background process:
Model: Add abstraction layer
● Separate image assets from the application by extracting.
● Replace image asset for references. Best way, md5 file
contents hash. This will be our image token.
● Store image references and relevant data in a persistence
layer (eg: SQL table or MongoDB document)
Model: Add abstraction layer
<!-- $html will be transformed to $processedHtml -->
<img src="http://example.com/path/to/image/image.jpg" style="
border:2px solid red" data-attribute="example1">
<!-- $processedHtml -->
{{IMG|6fd86da74659f04253285e853af26845|style="border:2px solid
red"|data-attribute="example1"}}
Image Service: Send to queue
● Use queues to resize images (optional) and optimise them.
● Queue system have drivers for many languages.
○ RabbitMQ
○ HornetQ
○ Apache ActiveMQ
○ Apache Apollo
○ Apache Qpid
○ ...
Controller: Use best image available
Fetch the best image possible using the reference:
○ If image has not been processed, use original.
○ If image has been processed, used optimised version.
Replace image token with the most performant image for the
current browser and device.
Queue workers
● The more queue workers, the faster images will be
processed.
● Priority queues can be set depending on criteria to speed up.
● CPU usage for these machines will be high.
● These machines should be able to write to a CDN server.
Application Code
Image
detokenizer
Queue
enqueuer
Image table
(image tokens)
Solution: architecture
Consistency model + high availability + distributed computing
Queue workers
Runs optimizer
script
Queue
System
CDN
(FileSystem)
n m
n m
Optimiser Strategy: The Tools
● Image optimisation tools are very specialised.
● Yet they are dumb, cannot work together.
● So let’s fix it and make them play together, as one.
Optimiser Strategy: The Tools
● JPG: jpegoptim, libjpeg-progs
● PNG: pngout, pngtools, advpng, pngcrush, optipng,
pngquant
● GIF: gifsicle
● SVG: SVGCleaner
● WebP: Google’s image format + encoder.
Optimiser Strategy: Big Picture
● Changing file format (eg: PNG to JPG, JPG to WEBP, GIF to
PNG) is absolutely OK.
● Lossless conversion is default, except for PNG to JPG.
● Run image optimizers in parallel...
● … so we can compare output file size and keep the smallest.
Optimiser Strategy: JPG
● Convert input image to have both progressive and baseline
versions JPGs.
● Remove EXIF and meta-data.
● Do JPG to WEBP conversion for supported browsers
● Compare output and keep the smallest JPG and WEBP if
smaller than produced JPG.
Optimiser Strategy: PNG
● Try reduce channels, from 32 to 24 to 8 bits when possible,
depending on the image colors.
● Alpha files 32 bits usually works as 24 bits
● Re-compress PNG with an optimized LWZ compressor.
Optimiser Strategy: GIF
● Try re-compression.
● If single-framed GIF, go for a PNG, usually produces smaller
file sizes.
● For animated GIF, just try frame optimization. No PNG.
Optimiser Strategy: SVG
● Clean it up using SVG Cleaner client.
● Compare output and keep the smallest.
Optimiser Strategy: The worker
● Runs the script. Returns a JSON straight from command-line
to worker.
● Worker reads the JSON and picks up the best image.
● Upload to CDN.
● Adds to the database the optimised version/s reference plus
additional data such as mime-type.
Questions?

More Related Content

Similar to Image Optimisation Techniques for WebApps - In detail

Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas Andrew Nikishaev
 
IRJET- Compress Image without Losing Image Quality using nQuant Library
IRJET-  	  Compress Image without Losing Image Quality using nQuant LibraryIRJET-  	  Compress Image without Losing Image Quality using nQuant Library
IRJET- Compress Image without Losing Image Quality using nQuant LibraryIRJET Journal
 
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)GPU Renderfarm with Integrated Asset Management & Production System (AMPS)
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)Budianto Tandianus
 
Orthogonal Matching Pursuit in 2D for Java with GPGPU Prospectives
Orthogonal Matching Pursuit in 2D for Java with GPGPU ProspectivesOrthogonal Matching Pursuit in 2D for Java with GPGPU Prospectives
Orthogonal Matching Pursuit in 2D for Java with GPGPU ProspectivesMatt Simons
 
EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopSamsung Open Source Group
 
Project presentation image compression by manish myst, ssgbcoet
Project presentation image compression by manish myst, ssgbcoetProject presentation image compression by manish myst, ssgbcoet
Project presentation image compression by manish myst, ssgbcoetManish Myst
 
A holistic approach to web performance
A holistic approach to web performanceA holistic approach to web performance
A holistic approach to web performanceAustin Gil
 
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNet
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNetFrom Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNet
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNetEric Haibin Lin
 
Performance Test Automation With Gatling
Performance Test Automation  With GatlingPerformance Test Automation  With Gatling
Performance Test Automation With GatlingKnoldus Inc.
 
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksDeep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksAmazon Web Services
 
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksDeep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksAmazon Web Services
 
Image optimization and you
Image optimization and youImage optimization and you
Image optimization and youJohannes Siipola
 
Korea linuxforum2014 html5game-sangseoklim
Korea linuxforum2014 html5game-sangseoklimKorea linuxforum2014 html5game-sangseoklim
Korea linuxforum2014 html5game-sangseoklimSang Seok Lim
 
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex Vlachos
 

Similar to Image Optimisation Techniques for WebApps - In detail (20)

Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas
 
Flowframes
FlowframesFlowframes
Flowframes
 
#PDR15 - Pebble Graphics
#PDR15 - Pebble Graphics#PDR15 - Pebble Graphics
#PDR15 - Pebble Graphics
 
Project report
Project reportProject report
Project report
 
IRJET- Compress Image without Losing Image Quality using nQuant Library
IRJET-  	  Compress Image without Losing Image Quality using nQuant LibraryIRJET-  	  Compress Image without Losing Image Quality using nQuant Library
IRJET- Compress Image without Losing Image Quality using nQuant Library
 
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)GPU Renderfarm with Integrated Asset Management & Production System (AMPS)
GPU Renderfarm with Integrated Asset Management & Production System (AMPS)
 
Orthogonal Matching Pursuit in 2D for Java with GPGPU Prospectives
Orthogonal Matching Pursuit in 2D for Java with GPGPU ProspectivesOrthogonal Matching Pursuit in 2D for Java with GPGPU Prospectives
Orthogonal Matching Pursuit in 2D for Java with GPGPU Prospectives
 
EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the Desktop
 
Project presentation image compression by manish myst, ssgbcoet
Project presentation image compression by manish myst, ssgbcoetProject presentation image compression by manish myst, ssgbcoet
Project presentation image compression by manish myst, ssgbcoet
 
A holistic approach to web performance
A holistic approach to web performanceA holistic approach to web performance
A holistic approach to web performance
 
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNet
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNetFrom Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNet
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNet
 
Gatling
Gatling Gatling
Gatling
 
Performance Test Automation With Gatling
Performance Test Automation  With GatlingPerformance Test Automation  With Gatling
Performance Test Automation With Gatling
 
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksDeep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive: Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
 
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech TalksDeep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
Deep Dive on Amazon EC2 Elastic GPUs - May 2017 AWS Online Tech Talks
 
(2) gui drawing
(2) gui drawing(2) gui drawing
(2) gui drawing
 
Ping Pong Pad
Ping Pong PadPing Pong Pad
Ping Pong Pad
 
Image optimization and you
Image optimization and youImage optimization and you
Image optimization and you
 
Korea linuxforum2014 html5game-sangseoklim
Korea linuxforum2014 html5game-sangseoklimKorea linuxforum2014 html5game-sangseoklim
Korea linuxforum2014 html5game-sangseoklim
 
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
 

Recently uploaded

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Image Optimisation Techniques for WebApps - In detail

  • 1. Image Optimisation for WebApps Nil Portugués Caldero6th October 2014
  • 2. Existing solutions Used either during dev or production deploy stage: ● Symfony2: Assetic Bundle ● NodeJS: github.com/gruntjs/grunt-contrib-imagemin ● Ruby/RoR: github.com/toy/image_optim
  • 3. Existing solution problems ● Not a real-time solution. ● Waiting for images does not scale. Slow deployment. ● No strategy!
  • 4. Existing requirements Device diversity: phone, tablet, PC require a strategy. ● Different presentation layers (media queries). Needs Strategy. ● Different design requirements. Needs Strategy. ● Fast multi-device UX. Needs Strategy.
  • 5. Is a consistency model used in distributed computing to achieve high availability that informally guarantees that, if no new updates are made to a given data item, eventually all accesses to that item will return the last updated value. Source: Wikipedia Strategy: eventual consistency
  • 6. Image Service Send image to optimise to Queue (if image is not in database) Model Extract and fetch optimized images (if any) for the current View Solution: Conceptual Queue with Image Optimisation workers Controller Use the best available image. View Renders HTML Background process:
  • 7. Model: Add abstraction layer ● Separate image assets from the application by extracting. ● Replace image asset for references. Best way, md5 file contents hash. This will be our image token. ● Store image references and relevant data in a persistence layer (eg: SQL table or MongoDB document)
  • 8. Model: Add abstraction layer <!-- $html will be transformed to $processedHtml --> <img src="http://example.com/path/to/image/image.jpg" style=" border:2px solid red" data-attribute="example1"> <!-- $processedHtml --> {{IMG|6fd86da74659f04253285e853af26845|style="border:2px solid red"|data-attribute="example1"}}
  • 9. Image Service: Send to queue ● Use queues to resize images (optional) and optimise them. ● Queue system have drivers for many languages. ○ RabbitMQ ○ HornetQ ○ Apache ActiveMQ ○ Apache Apollo ○ Apache Qpid ○ ...
  • 10. Controller: Use best image available Fetch the best image possible using the reference: ○ If image has not been processed, use original. ○ If image has been processed, used optimised version. Replace image token with the most performant image for the current browser and device.
  • 11. Queue workers ● The more queue workers, the faster images will be processed. ● Priority queues can be set depending on criteria to speed up. ● CPU usage for these machines will be high. ● These machines should be able to write to a CDN server.
  • 12. Application Code Image detokenizer Queue enqueuer Image table (image tokens) Solution: architecture Consistency model + high availability + distributed computing Queue workers Runs optimizer script Queue System CDN (FileSystem) n m n m
  • 13. Optimiser Strategy: The Tools ● Image optimisation tools are very specialised. ● Yet they are dumb, cannot work together. ● So let’s fix it and make them play together, as one.
  • 14. Optimiser Strategy: The Tools ● JPG: jpegoptim, libjpeg-progs ● PNG: pngout, pngtools, advpng, pngcrush, optipng, pngquant ● GIF: gifsicle ● SVG: SVGCleaner ● WebP: Google’s image format + encoder.
  • 15. Optimiser Strategy: Big Picture ● Changing file format (eg: PNG to JPG, JPG to WEBP, GIF to PNG) is absolutely OK. ● Lossless conversion is default, except for PNG to JPG. ● Run image optimizers in parallel... ● … so we can compare output file size and keep the smallest.
  • 16. Optimiser Strategy: JPG ● Convert input image to have both progressive and baseline versions JPGs. ● Remove EXIF and meta-data. ● Do JPG to WEBP conversion for supported browsers ● Compare output and keep the smallest JPG and WEBP if smaller than produced JPG.
  • 17. Optimiser Strategy: PNG ● Try reduce channels, from 32 to 24 to 8 bits when possible, depending on the image colors. ● Alpha files 32 bits usually works as 24 bits ● Re-compress PNG with an optimized LWZ compressor.
  • 18. Optimiser Strategy: GIF ● Try re-compression. ● If single-framed GIF, go for a PNG, usually produces smaller file sizes. ● For animated GIF, just try frame optimization. No PNG.
  • 19. Optimiser Strategy: SVG ● Clean it up using SVG Cleaner client. ● Compare output and keep the smallest.
  • 20. Optimiser Strategy: The worker ● Runs the script. Returns a JSON straight from command-line to worker. ● Worker reads the JSON and picks up the best image. ● Upload to CDN. ● Adds to the database the optimised version/s reference plus additional data such as mime-type.