{"id":336,"date":"2019-10-07T12:53:16","date_gmt":"2019-10-07T09:53:16","guid":{"rendered":"https:\/\/amorev.ru\/?p=336"},"modified":"2021-07-08T23:31:56","modified_gmt":"2021-07-08T20:31:56","slug":"speech-onfly-images-crop-and-storing","status":"publish","type":"post","link":"https:\/\/amorev.ru\/en\/speech-onfly-images-crop-and-storing\/","title":{"rendered":"Organization of cropping images on the fly and their optimal and scalable storage"},"content":{"rendered":"\n<ol class=\"wp-block-list\"><li>What if the same picture is needed in different sizes, different quality and different formats for each device?<\/li><li>Where and how to store pictures so that it could be advantageous and cheap?<\/li><li>How using nginx and backend  logic organize the efficient preparation and storage of images for different devices and formats?<\/li><\/ol>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/amorev.ru\/wp-content\/uploads\/2019\/10\/16-1-1024x682.jpg\" alt=\"\" class=\"wp-image-337\" width=\"359\" height=\"239\" srcset=\"https:\/\/amorev.ru\/wp-content\/uploads\/2019\/10\/16-1-1024x682.jpg 1024w, https:\/\/amorev.ru\/wp-content\/uploads\/2019\/10\/16-1-300x200.jpg 300w, https:\/\/amorev.ru\/wp-content\/uploads\/2019\/10\/16-1-768x512.jpg 768w, https:\/\/amorev.ru\/wp-content\/uploads\/2019\/10\/16-1.jpg 1280w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><figcaption>Photo from the presentation on this topic at BIF2019<\/figcaption><\/figure><\/div>\n\n\n\n<p>Having made a lot of mistakes, we came to a solution that we are actively and successfully using in current production projects.<\/p>\n\n\n\n<p>As an example, I consider the implementation of an extensible file storage on the backend and the example of integration with this storage on the JS side of the Vue + Nuxt.JS framework.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What if the same picture is needed in different sizes, different quality and different formats for each device? Where and how to store pictures so &hellip; <\/p>\n","protected":false},"author":1,"featured_media":337,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69,49],"tags":[165,180],"class_list":["post-336","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-konferencii","category-razrabotka","tag-izobrazheniya","tag-speech-points"],"_links":{"self":[{"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/posts\/336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/comments?post=336"}],"version-history":[{"count":0,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/posts\/336\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/media\/337"}],"wp:attachment":[{"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/media?parent=336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/categories?post=336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/amorev.ru\/en\/wp-json\/wp\/v2\/tags?post=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}