SlideShare a Scribd company logo
Images & PWA in
Magento
© Rrap Software Pvt Ltd
Pradip Shah,
Founder, luroConnect
© Rrap Software Pvt Ltd
© Rrap Software Pvt Ltd
eCommerce trends
Mobile
Image quality
Webp
Magento direction
No support for media queries
No support for pixel ratio
No support for webp
Whine, Whine!
© Rrap Software Pvt Ltd
Problems of Magento Images
• One solution is not suitable to all – code is not flexible
• Ignores mobile completely
• Mobile displays are better than desktop
• Iphone X has 3x retina display
• Most android phones are 2x
• Major difference in image quality
• Chrome & Firefox support webp – not Magento
• Ignores custom transformations you may need
© Rrap Software Pvt Ltd
img srcset & picture
Source : http://w3c.github.io
© Rrap Software Pvt Ltd
Magento 2 & image code
module-catalog/Block/Product/AbstractProduct.php
public function getImage($product, $imageId, $attributes = []){
return $this->imageBuilder->create($product, $imageId, $attributes);
templates/product/list.phtml
$productImage = $block->getImage($_product, $image);
module-catalog/Block/Product/ImageBuilder.php
public function create(Product $product = null, string $imageId = null, array $attributes = null){
$product = $product ?? $this->product;
$imageId = $imageId ?? $this->imageId;
$attributes = $attributes ?? $this->attributes;
return $this->imageFactory->create($product, $imageId, $attributes);
module-catalog/Block/Product/ImageFactory.php
$data = [ 'data' => [
'template' => 'Magento_Catalog::product/image_with_borders.phtml',
'image_url' => $imageAsset->getUrl(), 'width' => $imageMiscParams['image_width’],
…
'product_id' => $product->getId()
],
];
return $this->objectManager->create(ImageBlock::class, $data);
© Rrap Software Pvt Ltd
Magento does not support devicepixelratio
<theme>/templates/product/image_with_borders.phtml :
<span class="product-image-container"
style="width:<?= /* @escapeNotVerified */ $block->getWidth() ?>px;">
<span class="product-image-wrapper"
style="padding-bottom: <?= /* @escapeNotVerified */ ($block->getRatio() * 100) ?>%;">
<img class="product-image-photo"
<?= /* @escapeNotVerified */ $block->getCustomAttributes() ?>
src="<?= /* @escapeNotVerified */ $block->getImageUrl() ?>"
max-width="<?= /* @escapeNotVerified */ $block->getWidth() ?>"
max-height="<?= /* @escapeNotVerified */ $block->getHeight() ?>"
alt="<?= /* @escapeNotVerified */ $block->stripTags($block->getLabel(), null, true) ?>"/></span>
</span>
Guess what?
You are hosed!
The lowest element is generating a product-container
© Rrap Software Pvt Ltd
list.phtml …
<div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>">
<?php
$productImage = $block->getImage($_product, $imageDisplayArea);
…
<a href="<?= /* @escapeNotVerified */ $_product->getProductUrl() ?>"
class="product photo product-item-photo" tabindex="-1">
<?= $productImage->toHtml() ?>
</a>
© Rrap Software Pvt Ltd
<div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>">
<?php
$productImage_dt = $block->getImage($_product, $imageDisplayArea);
$productImage_dt_webp = $block->getImage($_product, $imageDisplayArea . “_webp”);
$productImage_pd = $block->getImage($_product, $imageDisplayArea . “_pad”);
$productImage_mo_2x = $block->getImage($_product, $imageDisplayArea . “_mo_2x”);
$productImage_mo_webp_2x = $block->getImage($_product, $imageDisplayArea . “_mo_webp_2x”);
…
<a href="<?= $_product->getProductUrl() ?>"
<span class="product-image-container">
<span class="product-image-wrapper“>
<picture class="product-image-photo“>
<source media="(max-width: 415px)"
srcset="<?php echo $productImage_mo->toHTML(); ?>,
<?php echo $productImage_mo_2x->toHTML();?> 2x" type="image/jpeg">
<img id="product-collection-image-<?php echo $_product->getId(); ?>"
src="="<?php echo $productImage->toHTML(); ?>
</picture>
</span>
</a> <theme>/templates/product/image_only.phtml :
<?php $block->getImageUrl() ?>
<div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>">
<?php
$productImage_small = $product->getMediaConfig()->getMediaUrl($product->getData(‘small’);
$productImage_large = $product->getMediaConfig()->getMediaUrl($product->getData(‘large’);
…
<a href="<?= $_product->getProductUrl() ?>"
<span class="product-image-container">
<span class="product-image-wrapper“>
<picture class="product-image-photo“>
<source media="(max-width: 415px)"
srcset="<?php echo $productImage_small.’?w=180&h=180&o=webp’?>,
<?php echo $productImage_large.’?w=360&h=360&o=webp’?> 2x" type="image/webp">
<img id="product-collection-image-<?php echo $_product->getId(); ?>"
src="="<?php echo $productImage->toHTML(); ?>
</picture>
</span>
</a>
What we do
© Rrap Software Pvt Ltd
Synchronous image generation
• Traditionally Magento generated images when the frontend would
load – category page with 32 items
• Many CDN based image generation is synchronous
• i.e. while the image is being fetched it is being converted
• However, due to HTTP/2, the requests will go out in parallel
Browser
php
img1 img2 img3
Request Response
© Rrap Software Pvt Ltd
Magento 2.3 and image code
Asynchronous generation of images
module-catalog/Observer/ImageResizeAfterProductSave.php
if (!(bool) $product->getId()) {
foreach ($product->getMediaGalleryImages() as $image) {
$this->imageResize->resizeFromImageName($image->getFile());
}
} else {
module-media-storage/Service/ImageResize.php
public function resizeFromImageName(string $originalImageName) {
…
foreach ($this->getViewImages($this->getThemesInUse()) as $viewImage) {
$this->resize($viewImage, $originalImagePath, $originalImageName);
private function resize(array $viewImage, string $originalImagePath, string $originalImageName)
{
$imageParams = $this->paramsBuilder->build($viewImage);
$image = $this->makeImage($originalImagePath, $imageParams);
…
$image->resize($imageParams['image_width'], $imageParams['image_height’]);
…
$image->save($imageAsset->getPath());
Guess what?
each image will have many variations use them or not!
Fix the view.xml in your themes now.
© Rrap Software Pvt Ltd
PWA and images
• Fetching a correctly sized image
You should get a higher resolution image if you are on a high pixel
density device. A good rule of thumb is to multiply the size of the
image you display by the pixel ratio.
var image = getImage({
width: PixelRatio.getPixelSizeForLayoutSize(200),
height: PixelRatio.getPixelSizeForLayoutSize(100),
});
<Image source={image} style={{width: 200, height: 100}} />
https://facebook.github.io/react-native/docs/0.8/pixelratio
© Rrap Software Pvt Ltd
PWA has choices of
© Rrap Software Pvt Ltd
© Rrap Software Pvt Ltd
https://headless.page/
© Rrap Software Pvt Ltd
PWA has
potential but
don’t use
Magento for
images
© Rrap Software Pvt Ltd
www.hartsofstur.com
https://www.hartsofstur.com/api
/catalog/products/57
© Rrap Software Pvt Ltd
Same image to all devices
© Rrap Software Pvt Ltd
Other image services
• Imagekit
• Great Indian Bootstrapped SaaS story
• Piggyback on a paid cloudflare account
• Cloudflare does webp conversion
• Imagekit backend offers image optimization
• Issue : Not application aware, conversion is synchronous, cf is distributed
• Question : Do they store or just convert (cf is distributed remember)
• Fastly
• Magento cloud partner – application aware
• CDN with Varnish on edge – distributed varnish
• Image optimization is synchronous
© Rrap Software Pvt Ltd
Resources
• https://medium.com/@bjoern.meyer/pwa-ecommerce-solutions-
compared-83bb498433e9
• https://headless.page/
© Rrap Software Pvt Ltd
https://www.luroConnect.com/
Where to find us
https://www.luroConnect.com/
info@luroConnect.com
@luroconnect

More Related Content

What's hot (20)

PPTX
Gae
guest0e51364
 
PDF
Make More Money With Advanced Custom Fields - WordCampYYC 2015
buildstudio
 
PDF
Stripes Framework
Johannes Carlén
 
PDF
Breaking Limits on Mobile HTML5 - TopConf Tallinn
Maximiliano Firtman
 
PPTX
Using of TDD practices for Magento
Ivan Chepurnyi
 
PDF
Best Practices for Magento Debugging
varien
 
PDF
How to make a WordPress theme
Hardeep Asrani
 
PPT
From jQuery to App Store in 30 Minutes
edill3484
 
PPTX
Making Magento flying like a rocket! (A set of valuable tips for developers)
Ivan Chepurnyi
 
PPTX
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
Estelle Weyl
 
PDF
WCLV13 JavaScript
Jeffrey Zinn
 
PDF
Yearning jQuery
Remy Sharp
 
DOC
L O S P I O O O J O S
Magdalena87
 
PPTX
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
 
PPT
Blogs como gerenciar
Edna17
 
PPT
Blogs como gerenciar
Andrelma
 
PPT
Blogs como gerenciar
RosemeireDomingues
 
PPT
Blogs como gerenciar
emedomimgues
 
PDF
Zf2 how arrays will save your project
Michelangelo van Dam
 
PPTX
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Atwix
 
Make More Money With Advanced Custom Fields - WordCampYYC 2015
buildstudio
 
Stripes Framework
Johannes Carlén
 
Breaking Limits on Mobile HTML5 - TopConf Tallinn
Maximiliano Firtman
 
Using of TDD practices for Magento
Ivan Chepurnyi
 
Best Practices for Magento Debugging
varien
 
How to make a WordPress theme
Hardeep Asrani
 
From jQuery to App Store in 30 Minutes
edill3484
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Ivan Chepurnyi
 
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
Estelle Weyl
 
WCLV13 JavaScript
Jeffrey Zinn
 
Yearning jQuery
Remy Sharp
 
L O S P I O O O J O S
Magdalena87
 
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
 
Blogs como gerenciar
Edna17
 
Blogs como gerenciar
Andrelma
 
Blogs como gerenciar
RosemeireDomingues
 
Blogs como gerenciar
emedomimgues
 
Zf2 how arrays will save your project
Michelangelo van Dam
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Atwix
 

Similar to Images and PWA in magento (20)

PDF
Image manipulation in WordPress 3.5
Marko Heijnen
 
PDF
实战Ecos
wanglei999
 
KEY
Lithium Best
Richard McIntyre
 
PPTX
Shared Element Transitions
Mike Scamell
 
PPT
Building Robust jQuery Plugins
Jörn Zaefferer
 
PDF
Dress Your WordPress with Child Themes
Laurie M. Rauch
 
PDF
After max+phonegap
yangdj
 
PDF
混搭移动开发:PhoneGap+JQurey+Dreamweaver
yangdj
 
PPTX
Extend sdk
Harsha Nagaraj
 
PDF
QA for PHP projects
Michelangelo van Dam
 
PDF
Bubbles & Trees with jQuery
Bastian Feder
 
PPTX
Php on the desktop and php gtk2
Elizabeth Smith
 
PDF
The Structure of Web Code: A Case For Polymer, November 1, 2014
Tommie Gannert
 
PDF
Everything is Awesome - Cutting the Corners off the Web
James Rakich
 
PDF
Virtual Madness @ Etsy
Nishan Subedi
 
PPTX
Drawing images
MfahamedaThabaseem
 
PDF
Android 2D Drawing and Animation Framework
Jussi Pohjolainen
 
PDF
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fabio Akita
 
KEY
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
PDF
Responsive Web in Brief
EPAM
 
Image manipulation in WordPress 3.5
Marko Heijnen
 
实战Ecos
wanglei999
 
Lithium Best
Richard McIntyre
 
Shared Element Transitions
Mike Scamell
 
Building Robust jQuery Plugins
Jörn Zaefferer
 
Dress Your WordPress with Child Themes
Laurie M. Rauch
 
After max+phonegap
yangdj
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
yangdj
 
Extend sdk
Harsha Nagaraj
 
QA for PHP projects
Michelangelo van Dam
 
Bubbles & Trees with jQuery
Bastian Feder
 
Php on the desktop and php gtk2
Elizabeth Smith
 
The Structure of Web Code: A Case For Polymer, November 1, 2014
Tommie Gannert
 
Everything is Awesome - Cutting the Corners off the Web
James Rakich
 
Virtual Madness @ Etsy
Nishan Subedi
 
Drawing images
MfahamedaThabaseem
 
Android 2D Drawing and Animation Framework
Jussi Pohjolainen
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fabio Akita
 
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
Responsive Web in Brief
EPAM
 
Ad

Recently uploaded (20)

PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Persuasive AI: risks and opportunities in the age of digital debate
Speck&Tech
 
PDF
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Complete Network Protection with Real-Time Security
L4RGINDIA
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Persuasive AI: risks and opportunities in the age of digital debate
Speck&Tech
 
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Complete Network Protection with Real-Time Security
L4RGINDIA
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Ad

Images and PWA in magento

  • 1. Images & PWA in Magento © Rrap Software Pvt Ltd Pradip Shah, Founder, luroConnect
  • 3. © Rrap Software Pvt Ltd eCommerce trends Mobile Image quality Webp Magento direction No support for media queries No support for pixel ratio No support for webp Whine, Whine!
  • 4. © Rrap Software Pvt Ltd Problems of Magento Images • One solution is not suitable to all – code is not flexible • Ignores mobile completely • Mobile displays are better than desktop • Iphone X has 3x retina display • Most android phones are 2x • Major difference in image quality • Chrome & Firefox support webp – not Magento • Ignores custom transformations you may need
  • 5. © Rrap Software Pvt Ltd img srcset & picture Source : http://w3c.github.io
  • 6. © Rrap Software Pvt Ltd Magento 2 & image code module-catalog/Block/Product/AbstractProduct.php public function getImage($product, $imageId, $attributes = []){ return $this->imageBuilder->create($product, $imageId, $attributes); templates/product/list.phtml $productImage = $block->getImage($_product, $image); module-catalog/Block/Product/ImageBuilder.php public function create(Product $product = null, string $imageId = null, array $attributes = null){ $product = $product ?? $this->product; $imageId = $imageId ?? $this->imageId; $attributes = $attributes ?? $this->attributes; return $this->imageFactory->create($product, $imageId, $attributes); module-catalog/Block/Product/ImageFactory.php $data = [ 'data' => [ 'template' => 'Magento_Catalog::product/image_with_borders.phtml', 'image_url' => $imageAsset->getUrl(), 'width' => $imageMiscParams['image_width’], … 'product_id' => $product->getId() ], ]; return $this->objectManager->create(ImageBlock::class, $data);
  • 7. © Rrap Software Pvt Ltd Magento does not support devicepixelratio <theme>/templates/product/image_with_borders.phtml : <span class="product-image-container" style="width:<?= /* @escapeNotVerified */ $block->getWidth() ?>px;"> <span class="product-image-wrapper" style="padding-bottom: <?= /* @escapeNotVerified */ ($block->getRatio() * 100) ?>%;"> <img class="product-image-photo" <?= /* @escapeNotVerified */ $block->getCustomAttributes() ?> src="<?= /* @escapeNotVerified */ $block->getImageUrl() ?>" max-width="<?= /* @escapeNotVerified */ $block->getWidth() ?>" max-height="<?= /* @escapeNotVerified */ $block->getHeight() ?>" alt="<?= /* @escapeNotVerified */ $block->stripTags($block->getLabel(), null, true) ?>"/></span> </span> Guess what? You are hosed! The lowest element is generating a product-container
  • 8. © Rrap Software Pvt Ltd list.phtml … <div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>"> <?php $productImage = $block->getImage($_product, $imageDisplayArea); … <a href="<?= /* @escapeNotVerified */ $_product->getProductUrl() ?>" class="product photo product-item-photo" tabindex="-1"> <?= $productImage->toHtml() ?> </a>
  • 9. © Rrap Software Pvt Ltd <div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>"> <?php $productImage_dt = $block->getImage($_product, $imageDisplayArea); $productImage_dt_webp = $block->getImage($_product, $imageDisplayArea . “_webp”); $productImage_pd = $block->getImage($_product, $imageDisplayArea . “_pad”); $productImage_mo_2x = $block->getImage($_product, $imageDisplayArea . “_mo_2x”); $productImage_mo_webp_2x = $block->getImage($_product, $imageDisplayArea . “_mo_webp_2x”); … <a href="<?= $_product->getProductUrl() ?>" <span class="product-image-container"> <span class="product-image-wrapper“> <picture class="product-image-photo“> <source media="(max-width: 415px)" srcset="<?php echo $productImage_mo->toHTML(); ?>, <?php echo $productImage_mo_2x->toHTML();?> 2x" type="image/jpeg"> <img id="product-collection-image-<?php echo $_product->getId(); ?>" src="="<?php echo $productImage->toHTML(); ?> </picture> </span> </a> <theme>/templates/product/image_only.phtml : <?php $block->getImageUrl() ?>
  • 10. <div class="product-item-info" data-container="product-<?= /* @escapeNotVerified */ $viewMode ?>"> <?php $productImage_small = $product->getMediaConfig()->getMediaUrl($product->getData(‘small’); $productImage_large = $product->getMediaConfig()->getMediaUrl($product->getData(‘large’); … <a href="<?= $_product->getProductUrl() ?>" <span class="product-image-container"> <span class="product-image-wrapper“> <picture class="product-image-photo“> <source media="(max-width: 415px)" srcset="<?php echo $productImage_small.’?w=180&h=180&o=webp’?>, <?php echo $productImage_large.’?w=360&h=360&o=webp’?> 2x" type="image/webp"> <img id="product-collection-image-<?php echo $_product->getId(); ?>" src="="<?php echo $productImage->toHTML(); ?> </picture> </span> </a> What we do
  • 11. © Rrap Software Pvt Ltd Synchronous image generation • Traditionally Magento generated images when the frontend would load – category page with 32 items • Many CDN based image generation is synchronous • i.e. while the image is being fetched it is being converted • However, due to HTTP/2, the requests will go out in parallel Browser php img1 img2 img3 Request Response
  • 12. © Rrap Software Pvt Ltd Magento 2.3 and image code Asynchronous generation of images module-catalog/Observer/ImageResizeAfterProductSave.php if (!(bool) $product->getId()) { foreach ($product->getMediaGalleryImages() as $image) { $this->imageResize->resizeFromImageName($image->getFile()); } } else { module-media-storage/Service/ImageResize.php public function resizeFromImageName(string $originalImageName) { … foreach ($this->getViewImages($this->getThemesInUse()) as $viewImage) { $this->resize($viewImage, $originalImagePath, $originalImageName); private function resize(array $viewImage, string $originalImagePath, string $originalImageName) { $imageParams = $this->paramsBuilder->build($viewImage); $image = $this->makeImage($originalImagePath, $imageParams); … $image->resize($imageParams['image_width'], $imageParams['image_height’]); … $image->save($imageAsset->getPath()); Guess what? each image will have many variations use them or not! Fix the view.xml in your themes now.
  • 13. © Rrap Software Pvt Ltd PWA and images • Fetching a correctly sized image You should get a higher resolution image if you are on a high pixel density device. A good rule of thumb is to multiply the size of the image you display by the pixel ratio. var image = getImage({ width: PixelRatio.getPixelSizeForLayoutSize(200), height: PixelRatio.getPixelSizeForLayoutSize(100), }); <Image source={image} style={{width: 200, height: 100}} /> https://facebook.github.io/react-native/docs/0.8/pixelratio
  • 14. © Rrap Software Pvt Ltd PWA has choices of
  • 15. © Rrap Software Pvt Ltd
  • 16. © Rrap Software Pvt Ltd https://headless.page/
  • 17. © Rrap Software Pvt Ltd PWA has potential but don’t use Magento for images
  • 18. © Rrap Software Pvt Ltd www.hartsofstur.com https://www.hartsofstur.com/api /catalog/products/57
  • 19. © Rrap Software Pvt Ltd Same image to all devices
  • 20. © Rrap Software Pvt Ltd Other image services • Imagekit • Great Indian Bootstrapped SaaS story • Piggyback on a paid cloudflare account • Cloudflare does webp conversion • Imagekit backend offers image optimization • Issue : Not application aware, conversion is synchronous, cf is distributed • Question : Do they store or just convert (cf is distributed remember) • Fastly • Magento cloud partner – application aware • CDN with Varnish on edge – distributed varnish • Image optimization is synchronous
  • 21. © Rrap Software Pvt Ltd Resources • https://medium.com/@bjoern.meyer/pwa-ecommerce-solutions- compared-83bb498433e9 • https://headless.page/
  • 22. © Rrap Software Pvt Ltd https://www.luroConnect.com/ Where to find us https://www.luroConnect.com/ [email protected] @luroconnect