{"id":66023,"date":"2024-06-10T17:35:32","date_gmt":"2024-06-10T14:05:32","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/"},"modified":"2024-06-10T17:35:32","modified_gmt":"2024-06-10T14:05:32","slug":"%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/","title":{"rendered":"\u0645\u0642\u06cc\u0627\u0633 \u06af\u0630\u0627\u0631\u06cc Next.js \u0628\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0634 Redis"},"content":{"rendered":"<p><\/p>\n<div data-article-id=\"1883252\" id=\"article-body\">\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u062f\u0647\u200c\u0647\u0627 \u0646\u0645\u0648\u0646\u0647 Next.js \u062f\u0631 \u062d\u0627\u0644 \u062a\u0648\u0644\u06cc\u062f \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u062e\u0648\u0634\u0647 Kubernetes \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.  \u0627\u06a9\u062b\u0631 \u0635\u0641\u062d\u0627\u062a \u0634\u0645\u0627 \u0627\u0632 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u0641\u0632\u0627\u06cc\u0634\u06cc (ISR) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0635\u0641\u062d\u0627\u062a \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u062a\u0648\u0644\u06cc\u062f \u0648 \u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f.  \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0647 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0627\u0632 \u0646\u0633\u062e\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647\u060c \u062f\u0648\u0631 \u0632\u062f\u0646 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc\u060c \u062d\u062f\u0627\u0642\u0644 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0648\u0631\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0645\u062c\u062f\u062f \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0645\u0646\u0642\u0636\u06cc \u0634\u0648\u062f\u060c \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.  \u062e\u0648\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628 \u0645\u0642\u06cc\u0627\u0633 \u0646\u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/#%D9%85%D8%B3%D8%A6%D9%84%D9%87\" >\u0645\u0633\u0626\u0644\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/#%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_%D9%87%D8%A7%DB%8C_%D8%A7%D9%85%DA%A9%D8%A7%D9%86_%D9%BE%D8%B0%DB%8C%D8%B1\" >\u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/#Nextjs_%D9%88_Redis\" >Next.js \u0648 Redis<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/#%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D9%88_%D8%AB%D8%A8%D8%A7%D8%AA\" >\u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u062b\u0628\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3-%da%af%d8%b0%d8%a7%d8%b1%db%8c-next-js-%d8%a8%d8%a7-%da%a9%d9%86%d8%aa%d8%b1%d9%84-%da%a9%d9%86%d9%86%d8%af%d9%87-%da%a9%d8%b4-redis\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B3%D8%A6%D9%84%D9%87\"><\/span>\n<p>  \u0645\u0633\u0626\u0644\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0627\u062f\u0647 \u0647\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u0646\u062f \u0627\u0645\u0627 \u0647\u0631\u06af\u0632 \u067e\u0627\u06a9 \u0646\u0645\u06cc \u0634\u0648\u0646\u062f.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 NextJS \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647\u060c \u062a\u06a9\u0631\u0627\u0631\u06cc \u0648 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631 Odrabiamy.pl\u060c \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc k8s \u0645\u0627 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u062a\u0627 30 \u06af\u06cc\u06af\u0627\u0628\u0627\u06cc\u062a \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u0634\u063a\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.  \u0627\u06cc\u0646 \u062d\u062c\u0645 \u0639\u0638\u06cc\u0645\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u06af\u0631\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u06af\u0631 20 \u06af\u0631\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0686\u0647\u061f  \u0627\u06cc\u0646 600 \u06af\u06cc\u06af\u0627\u0628\u0627\u06cc\u062a \u062f\u0627\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_%D9%87%D8%A7%DB%8C_%D8%A7%D9%85%DA%A9%D8%A7%D9%86_%D9%BE%D8%B0%DB%8C%D8%B1\"><\/span>\n<p>  \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0633\u0639\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0631\u0627\u0647 \u062d\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06cc\u0646\u0647\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0627 \u0628\u0648\u062f\u0646\u062f:<\/p>\n<ol>\n<li>\n<strong>\u0627\u0632 \u06cc\u06a9 \u062d\u062c\u0645 \u062f\u0627\u0626\u0645\u06cc Kubernetes \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f <code>.next<\/code> \u0641\u0647\u0631\u0633\u062a \u0631\u0627\u0647\u0646\u0645\u0627<\/strong>\u060c \u0627\u0645\u0627 \u0645\u0639\u0627\u06cc\u0628 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u062f:<\/p>\n<ol>\n<li>\u0647\u0631 \u067e\u0627\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0646\u062f\u0646\/\u0646\u0648\u0634\u062a\u0646 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0634\u06a9\u0644\u0627\u062a \u0628\u0632\u0631\u06af\u06cc \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u06cc\u0646 \u067e\u0627\u062f\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.  \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u06a9\u0646\u062a\u0631\u0644\u0631 \u06a9\u0634 \u062e\u0648\u062f \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/li>\n<li>\u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u06cc \u0628\u0631\u0627\u06cc \u06a9\u067e\u06cc \u06a9\u0631\u062f\u0646 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a <code>.next<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647 \u06cc\u06a9 \u062d\u062c\u0645 \u0645\u0634\u062a\u0631\u06a9 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0648 \u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<\/li>\n<li>\n<strong>\u0627\u0632 Redis \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Next.js \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0627\u062a \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/strong> &#8211; \u06a9\u0647 \u0627\u0632 \u0646\u0638\u0631 \u0632\u0645\u0627\u0646 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0648 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0631\u0627\u0647 \u062d\u0644 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0639\u0627\u0644\u06cc \u0628\u0648\u062f.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Nextjs_%D9%88_Redis\"><\/span>\n<p>  Next.js \u0648 Redis<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636\u060c Next.js \u0627\u0632 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0634 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c Vercel \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0646 \u0622\u0646 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0634 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645 <code>next.config.js<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code>  <span class=\"nx\">cacheHandler<\/span><span class=\"p\">:<\/span>\n    <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">NODE_ENV<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">production<\/span><span class=\"dl\">'<\/span>\n      <span class=\"p\">?<\/span> <span class=\"nx\">require<\/span><span class=\"p\">.<\/span><span class=\"nf\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.\/cache-handler.cjs<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">:<\/span> <span class=\"kc\">undefined<\/span><span class=\"p\">,<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0641\u0642\u0637 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0644\u06cc\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u062a\u0648\u0633\u0639\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a.  \u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a <code>cache-handler.cjs<\/code> \u0641\u0627\u06cc\u0644.  (\u062a\u0648\u062c\u0647: \u0628\u0633\u062a\u0647 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc npm \u062e\u0648\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc ES \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.)<\/p>\n<p>\u0645\u0627 \u0627\u0632 \u0628\u0633\u062a\u0647 @neshca\/cache-handler \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u06a9\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u06a9\u0646\u062a\u0631\u0644\u0631\u0647\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0634 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0637\u0631\u062d \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647:<\/p>\n<ul>\n<li>Redis \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0635\u0644\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u060c \u0627\u0632 \u06a9\u0634 LRU \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f (\u062d\u062f\u0627\u0642\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646)<\/li>\n<\/ul>\n<p>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0627\u0633\u06cc \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/ cache-handler.cjs<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">createClient<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">redis<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">createClient<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">CacheHandler<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">@neshca\/cache-handler<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">CacheHandler<\/span><span class=\"p\">;<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">createLruCache<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">@neshca\/cache-handler\/local-lru<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"k\">default<\/span><span class=\"p\">;<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">createRedisCache<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">@neshca\/cache-handler\/redis-strings<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"k\">default<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">CacheHandler<\/span><span class=\"p\">.<\/span><span class=\"nf\">onCreation<\/span><span class=\"p\">(<\/span><span class=\"k\">async <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">localCache<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createLruCache<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">maxItemsNumber<\/span><span class=\"p\">:<\/span> <span class=\"mi\">10000<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">maxItemSizeBytes<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1024<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1024<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">250<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Limit to 250 MB<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"kd\">let<\/span> <span class=\"nx\">redisCache<\/span><span class=\"p\">;<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">REDIS_URL<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">warn<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">REDIS_URL env is not set, using local cache only.<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">client<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createClient<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">url<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">REDIS_URL<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">});<\/span>\n\n      <span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">on<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Redis error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n\n      <span class=\"k\">await<\/span> <span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">connect<\/span><span class=\"p\">();<\/span>\n\n      <span class=\"nx\">redisCache<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createRedisCache<\/span><span class=\"p\">({<\/span>\n        <span class=\"nx\">client<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">keyPrefix<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`next-shared-cache-<\/span><span class=\"p\">${<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">NEXT_PUBLIC_BUILD_NUMBER<\/span><span class=\"p\">}<\/span><span class=\"s2\">:`<\/span><span class=\"p\">,<\/span>\n        <span class=\"c1\">\/\/ timeout for the Redis client operations like `get` and `set`<\/span>\n        <span class=\"c1\">\/\/ after this timeout, the operation will be considered failed and the `localCache` will be used<\/span>\n        <span class=\"na\">timeoutMs<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5000<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">Failed to initialize Redis cache, using local cache only.<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">error<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">handlers<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"nx\">redisCache<\/span><span class=\"p\">,<\/span> <span class=\"nx\">localCache<\/span><span class=\"p\">],<\/span>\n    <span class=\"na\">ttl<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ This value is also used as revalidation time for every ISR site<\/span>\n      <span class=\"na\">defaultStaleAge<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">NEXT_PUBLIC_CACHE_IN_SECONDS<\/span><span class=\"p\">,<\/span> \n      <span class=\"c1\">\/\/ This makes sure, that resources without set revalidation time aren't stored infinitely in Redis<\/span>\n      <span class=\"na\">estimateExpireAge<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">staleAge<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">staleAge<\/span><span class=\"p\">,<\/span> \n    <span class=\"p\">},<\/span>\n  <span class=\"p\">};<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">CacheHandler<\/span><span class=\"p\">;<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0647\u0634\u062f\u0627\u0631 \u062c\u0627\u0644\u0628 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0627\u06af\u0631 Redis \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u0633\u0631\u0648\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u0628\u0627\u0634\u062f\u060c \u0686\u0647\u061f  \u062e\u0637 <code>await client.connect();<\/code> \u0634\u06a9\u0633\u062a \u0645\u06cc \u062e\u0648\u0631\u062f \u0648 \u0635\u0641\u062d\u0647 \u0628\u0627 \u062a\u0627\u062e\u06cc\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0645\u0627 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644\u060c Next.js \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0634\u062e\u0635\u06cc \u0627\u0632 \u0647\u0631 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0628\u0627\u0632\u062f\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u06cc\u06a9 CacheHandler \u062c\u062f\u06cc\u062f \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u06cc\u0645 \u062f\u0631 \u0686\u0646\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u06cc \u0641\u0642\u0637 \u0627\u0632 LRU \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0631\u0627\u0647 \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0628\u06cc \u0627\u0647\u0645\u06cc\u062a \u0646\u06cc\u0633\u062a\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 <code>createClient<\/code> \u062e\u0637\u0627 \u0646\u0645\u06cc \u06a9\u0646\u062f\u061b  \u0622\u0646 \u0631\u0627 \u0641\u0642\u0637 \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code>      <span class=\"p\">...<\/span>\n      <span class=\"kd\">let<\/span> <span class=\"nx\">isReady<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n\n      <span class=\"kd\">const<\/span> <span class=\"nx\">client<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createClient<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">url<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">REDIS_URL<\/span><span class=\"p\">,<\/span>\n        <span class=\"na\">socket<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n          <span class=\"na\">reconnectStrategy<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span><span class=\"nx\">isReady<\/span> <span class=\"p\">?<\/span> <span class=\"mi\">5000<\/span> <span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">),<\/span>\n        <span class=\"p\">},<\/span>\n\n      <span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">on<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Redis error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n\n      <span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">on<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">ready<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">isReady<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n      <span class=\"p\">});<\/span>\n\n      <span class=\"k\">await<\/span> <span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">connect<\/span><span class=\"p\">();<\/span>\n\n      <span class=\"p\">...<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u062a\u0635\u0627\u0644 \u0627\u0648\u0644\u06cc\u0647\u060c Next.js \u0633\u0639\u06cc \u062f\u0631 \u0627\u062a\u0635\u0627\u0644 \u0645\u062c\u062f\u062f \u0646\u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a.  \u062f\u0631 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631\u060c \u0627\u062a\u0635\u0627\u0644 \u0645\u062c\u062f\u062f \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0627\u0633\u062a \u0648 \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0627\u0641\u0633\u0648\u0646 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF_%D9%88_%D8%AB%D8%A8%D8%A7%D8%AA\"><\/span>\n<p>  \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u062b\u0628\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u0633\u062a \u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 CPU \u062d\u062f\u0648\u062f 2\u066a \u0627\u0641\u0632\u0627\u06cc\u0634 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0632\u0645\u0627\u0646 \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u062b\u0627\u0628\u062a \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 Odrabiamy\u060c \u0647\u062f\u0641 \u0645\u0627 \u0646\u0647 \u062a\u0646\u0647\u0627 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u0631\u0627\u0647\u200c\u062d\u0644 \u06a9\u0627\u0631\u0622\u0645\u062f\u060c \u0628\u0644\u06a9\u0647 \u062f\u0627\u0634\u062a\u0646 \u0644\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0645\u0633\u062a\u0642\u0644 \u0627\u0633\u062a\u060c \u0628\u0647 \u0637\u0648\u0631\u06cc \u06a9\u0647 \u0647\u0631\u06af\u0648\u0646\u0647 \u062e\u0631\u0627\u0628\u06cc \u0628\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0623\u062b\u06cc\u0631 \u0646\u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u062f.  \u0627\u06cc\u0646 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u06a9\u0645\u062a\u0631\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u062e\u06cc\u0631 (LRU) \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062d\u06cc\u0627\u062a\u06cc \u0648\u0627\u0631\u062f \u0628\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f.  \u062f\u0631 \u0637\u0648\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc\u060c \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 Redis \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062e\u0627\u062a\u0645\u0647 \u062f\u0627\u062f\u06cc\u0645 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0622\u0646 \u0634\u062f <strong>\u062a\u0648\u0642\u0641 \u0635\u0641\u0631<\/strong>.  \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u06cc\u0646 Redis \u0648 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 LRU \u0628\u0647 \u0642\u062f\u0631\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0648\u062f \u06a9\u0647 \u062d\u062a\u06cc \u062f\u0631 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0627 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647 \u0646\u0628\u0648\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 Next.js \u06a9\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u062e\u0648\u0634\u0647 Kubernetes \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 Redis \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u0627\u0628\u0639 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u062e\u0637\u0631 \u0648 \u06a9\u0627\u0647\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u0632\u0627\u062f \u06a9\u0646\u062f.  \u062a\u0646\u0638\u06cc\u0645 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a \u0648 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0644\u06cc\u062f \u0645\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0634\u062f\u0647 \u0628\u0648\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u062f\u0647\u200c\u0647\u0627 \u0646\u0645\u0648\u0646\u0647 Next.js \u062f\u0631 \u062d\u0627\u0644 \u062a\u0648\u0644\u06cc\u062f \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u062e\u0648\u0634\u0647 Kubernetes \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u06a9\u062b\u0631 \u0635\u0641\u062d\u0627\u062a \u0634\u0645\u0627 \u0627\u0632 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u0641\u0632\u0627\u06cc\u0634\u06cc (ISR) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0635\u0641\u062d\u0627\u062a \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u062a\u0648\u0644\u06cc\u062f \u0648 \u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f. \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0647 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0627\u0632 \u0646\u0633\u062e\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647\u060c \u062f\u0648\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":66024,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media.dev.to\/cdn-cgi\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcyiwjr8o29q3wxa59w0r.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-66023","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/66023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=66023"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/66023\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/66024"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=66023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=66023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=66023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}