{"id":99668,"date":"2025-03-02T00:40:43","date_gmt":"2025-03-01T21:10:43","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/"},"modified":"2025-03-02T00:40:43","modified_gmt":"2025-03-01T21:10:43","slug":"mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/","title":{"rendered":"Mastering Caching API: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 API \u0647\u0627\u06cc REST \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627"},"content":{"rendered":"<div data-article-id=\"2303588\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><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\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D9%85%D9%82%D8%AF%D9%85%D9%87\" >\u0645\u0642\u062f\u0645\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\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%DA%86%D8%B1%D8%A7_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D9%87%D9%85%DB%8C%D8%AA_%D8%AF%D8%A7%D8%B1%D8%AF\" >\u0686\u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f<\/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\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%84%D8%A7%DB%8C%D9%87_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A8%D9%86%DB%8C%D8%A7%D8%AF\" >\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0644\u0627\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647: \u0628\u0646\u06cc\u0627\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D8%A8%D8%A7_redis\" >\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0627 redis<\/a><\/li><\/ul><\/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\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D8%A8%D9%87%DB%8C%D9%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%BE%D8%A7%D8%B3%D8%AE_%DA%A9%D8%A7%D9%85%D9%84\" >\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a: \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u0633\u062e \u06a9\u0627\u0645\u0644<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\" >\u0686\u06af\u0648\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D9%85%D8%A4%D8%AB%D8%B1\" >\u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0624\u062b\u0631<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%B4%D8%B1%D9%88%D8%B7_%D8%B1%D8%A7%D9%86%D8%AF%D9%85%D8%A7%D9%86_%D9%BE%D9%87%D9%86%D8%A7%DB%8C_%D8%A8%D8%A7%D9%86%D8%AF\" >\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0634\u0631\u0648\u0637: \u0631\u0627\u0646\u062f\u0645\u0627\u0646 \u067e\u0647\u0646\u0627\u06cc \u0628\u0627\u0646\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_etag_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\" >\u0686\u06af\u0648\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc etag \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%AA%D8%B9%D8%A7%D9%85%D9%84_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1_%D8%A8%D8%A7_ETAG\" >\u062a\u0639\u0627\u0645\u0644 \u0645\u0634\u062a\u0631\u06cc-\u0633\u0631\u0648\u0631 \u0628\u0627 ETAG<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%A8%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%A8%D9%88%D8%AF%D9%86_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D8%AA%D8%A7%D8%B2%D9%87_%D9%86%DA%AF%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA%D9%86_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7\" >\u0628\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0628\u0648\u062f\u0646 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646: \u062a\u0627\u0632\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#1\" >1.<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#2_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AF%D8%B1_%D9%BE%D8%B4%D8%AA\" >2. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u067e\u0634\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#3_%D8%A7%D8%AE%D8%B1%D8%A7%D8%AC_%D9%85%D8%A8%D8%AA%D9%86%DB%8C_%D8%A8%D8%B1_TTL\" >3. \u0627\u062e\u0631\u0627\u062c \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 TTL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%DA%86%D9%86%D8%AF_%D9%84%D8%A7%DB%8C%D9%87_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%DA%A9%D8%A7%D9%85%D9%84\" >\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0686\u0646\u062f \u0644\u0627\u06cc\u0647: \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0645\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D9%87%D9%85%D9%87_%D8%A7%DB%8C%D9%86%D9%87%D8%A7_%D8%B1%D8%A7_%D8%A8%D8%A7_%D9%87%D9%85_%D8%AC%D9%85%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF_%D8%B7%D8%B1%D8%AD_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B4%D9%85%D8%A7\" >\u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062c\u0645\u0639 \u06a9\u0646\u06cc\u062f: \u0637\u0631\u062d \u0630\u062e\u06cc\u0631\u0647 \u0634\u0645\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/mastering-caching-api-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-api-%d9%87%d8%a7%db%8c-rest-%d8%a8%d8%a7-%da%a9%d8%a7%d8%b1%d8%a7%db%8c\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0646\u06cc\u0627\u06cc\u06cc \u0631\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u06a9\u0647 API \u0634\u0645\u0627 \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f \u060c \u0631\u0639\u062f \u0648 \u0628\u0631\u0642 \u0633\u0631\u06cc\u0639 \u060c \u0628\u062f\u0648\u0646 \u0634\u06a9\u0633\u062a\u0646 \u0639\u0631\u0642 \u060c \u062a\u0631\u0627\u0641\u06cc\u06a9 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0622\u0631\u0627\u0645\u0634 \u062f\u0631 \u0645\u06cc \u0622\u0648\u0631\u062f. \u0627\u06cc\u0646 \u0642\u062f\u0631\u062a \u0630\u062e\u06cc\u0631\u0647 \u0645\u0624\u062b\u0631 \u0627\u0633\u062a! \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u060c \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u0631 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u062c\u0631\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 API \u0647\u0627\u06cc \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u062e\u0648\u062f \u0628\u062f\u0627\u0646\u06cc\u062f \u060c \u0637\u06cc \u0645\u06cc \u06a9\u0646\u0645 \u062a\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0637\u0631\u0632 \u0686\u0634\u0645\u06af\u06cc\u0631\u06cc \u062a\u0642\u0648\u06cc\u062a \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D9%87%D9%85%DB%8C%D8%AA_%D8%AF%D8%A7%D8%B1%D8%AF\"><\/span>\n<p>  \u0686\u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0627\u0646\u0646\u062f \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0645\u06cc\u0627\u0646\u0628\u0631\u0647\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u06a9\u0631\u0631 \u0627\u0633\u062a. \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u06cc\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0627\u0631\u0646\u062f \u060c \u0628\u0627\u0639\u062b \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u062f\u0631 \u0648\u0642\u062a \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc API \u0647\u0627 \u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u0641\u0627\u0648\u062a \u0628\u06cc\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0644\u0627\u063a\u0631 \u0648 \u06cc\u06a9 \u06a9\u0627\u0631\u0622\u0641\u0631\u06cc\u0646 \u0628\u0627\u0634\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u062e\u0648\u0634\u062d\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%84%D8%A7%DB%8C%D9%87_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A8%D9%86%DB%8C%D8%A7%D8%AF\"><\/span>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0644\u0627\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647: \u0628\u0646\u06cc\u0627\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0644\u0627\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 API \u0647\u0627\u06cc REST \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f. \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u06a9\u0631\u0631 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0647 \u0634\u062f\u062a \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D8%AF%D8%B1_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D8%A8%D8%A7_redis\"><\/span>\n<p>  \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0627 redis<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp8u4m99ot4jty83hh1f.png\" alt=\"\u0630\u062e\u06cc\u0631\u0647 \u0628\u0627 \u062a\u0635\u0648\u06cc\u0631 redis\" loading=\"lazy\" width=\"800\" height=\"442\" title=\"\"><\/p>\n<p>\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Redis \u0648 Memcached \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 RAM \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0641\u0648\u0631\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0633\u0627\u062f\u0647 JavaScript \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 redis \u0628\u0627 node.js \u0628\u0631\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">redis<\/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>\n<span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">promisify<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">util<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">client<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">redis<\/span><span class=\"p\">.<\/span><span class=\"nf\">createClient<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ Promisify Redis methods<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">getAsync<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">promisify<\/span><span class=\"p\">(<\/span><span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">).<\/span><span class=\"nf\">bind<\/span><span class=\"p\">(<\/span><span class=\"nx\">client<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">setAsync<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">promisify<\/span><span class=\"p\">(<\/span><span class=\"nx\">client<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">).<\/span><span class=\"nf\">bind<\/span><span class=\"p\">(<\/span><span class=\"nx\">client<\/span><span class=\"p\">);<\/span>\n\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">getUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Try to get profile from Redis first<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">cachedProfile<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Cache hit - return immediately<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">cachedProfile<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">return<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">cachedProfile<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ Cache miss - fetch from database<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">profile<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">databaseService<\/span><span class=\"p\">.<\/span><span class=\"nf\">fetchUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Store in Redis with TTL of 5 minutes (300 seconds)<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nf\">setAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">profile<\/span><span class=\"p\">),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">EX<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">300<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nx\">profile<\/span><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\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error fetching user profile:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">throw<\/span> <span class=\"nx\">error<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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\u0632\u0627\u06cc\u0627 \u0641\u0648\u0631\u06cc \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\n<strong>\u06a9\u0627\u0647\u0634 \u062a\u0623\u062e\u06cc\u0631<\/strong>: \u067e\u0627\u0633\u062e \u0647\u0627 \u062f\u0631 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0646\u062f<\/li>\n<li>\n<strong>\u0628\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u067e\u0627\u06cc\u06cc\u0646<\/strong>: \u06a9\u0645\u062a\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0636\u0631\u0628\u0647 \u0645\u06cc \u0632\u0646\u062f<\/li>\n<li>\n<strong>\u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647<\/strong>: API \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%D8%A8%D9%87%DB%8C%D9%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%BE%D8%A7%D8%B3%D8%AE_%DA%A9%D8%A7%D9%85%D9%84\"><\/span>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a: \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u0633\u062e \u06a9\u0627\u0645\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngy0148ca9xsjpwyczyi.png\" alt=\"  \u062a\u0635\u0648\u06cc\u0631 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a\" loading=\"lazy\" width=\"800\" height=\"496\" title=\"\"><\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0644\u0627\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631 \u0631\u0648\u06cc \u0627\u0634\u06cc\u0627\u0621 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u0645\u062a\u0645\u0631\u06a9\u0632 \u0627\u0633\u062a \u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0644 \u067e\u0627\u0633\u062e \u0647\u0627\u06cc API \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u0647\u0627\u06cc \u062e\u0627\u0635 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B7%D8%AD_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u0645\u0634\u062a\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0628\u0631\u0631\u0633\u06cc \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u06cc\u0627\u0641\u062a\u0646 (\u0636\u0631\u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646) \u2192 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u06cc\u0627\u0641\u062a\u0646 (\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646) rease \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0641\u0631\u0622\u06cc\u0646\u062f \u060c \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e \u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D9%85%D8%A4%D8%AB%D8%B1\"><\/span>\n<p>  \u062a\u0648\u0644\u06cc\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0624\u062b\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0624\u062b\u0631 \u062f\u0631 \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627 \u0647\u0645 \u060c \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u062a\u0645\u0627\u06cc\u0632 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062a\u06a9 \u0645\u0646\u0628\u0639:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">cacheKey<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`user:<\/span><span class=\"p\">${<\/span><span class=\"nx\">userId<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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>\u0628\u0631\u0627\u06cc \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u0628\u0627 \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">getUserList<\/span><span class=\"p\">(<\/span><span class=\"nx\">page<\/span><span class=\"p\">,<\/span> <span class=\"nx\">limit<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Generate unique cache key based on parameters<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">cacheKey<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`userList:page<\/span><span class=\"p\">${<\/span><span class=\"nx\">page<\/span><span class=\"p\">}<\/span><span class=\"s2\">:limit<\/span><span class=\"p\">${<\/span><span class=\"nx\">limit<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ Check if response is already cached<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">cachedUsers<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">cacheKey<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">cachedUsers<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">return<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">cachedUsers<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ Cache miss - fetch from database<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">users<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">fetchUsersFromDatabase<\/span><span class=\"p\">(<\/span><span class=\"nx\">page<\/span><span class=\"p\">,<\/span> <span class=\"nx\">limit<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Cache response with TTL of 10 minutes (600 seconds)<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nf\">setAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">cacheKey<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">users<\/span><span class=\"p\">),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">EX<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">600<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"nx\">users<\/span><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\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error fetching users list:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">throw<\/span> <span class=\"nx\">error<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0631\u0627\u06cc:<\/p>\n<ul>\n<li>API \u0647\u0627\u06cc \u0633\u0646\u06af\u06cc\u0646 \u062e\u0648\u0627\u0646\u062f\u0646<\/li>\n<li>\u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0633\u0628\u062a\u0627\u064b \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9<\/li>\n<li>\u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u06cc\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%B4%D8%B1%D9%88%D8%B7_%D8%B1%D8%A7%D9%86%D8%AF%D9%85%D8%A7%D9%86_%D9%BE%D9%87%D9%86%D8%A7%DB%8C_%D8%A8%D8%A7%D9%86%D8%AF\"><\/span>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0634\u0631\u0648\u0637: \u0631\u0627\u0646\u062f\u0645\u0627\u0646 \u067e\u0647\u0646\u0627\u06cc \u0628\u0627\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0686\u0647 \u0645\u06cc \u0634\u0648\u062f \u0627\u06af\u0631 \u0645\u0634\u062a\u0631\u06cc \u0641\u0642\u0637 \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0622\u062e\u0631\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0622\u0646\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u061f \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0634\u0631\u0648\u0637 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u062f\u0631\u0647\u0627\u06cc HTTP \u0645\u0627\u0646\u0646\u062f \u062d\u0644 \u0645\u06cc \u06a9\u0646\u062f <code>ETag<\/code> \u0648\u062a <code>Last-Modified<\/code>\u0628\u0634\u0631<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_etag_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc etag \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Using Express.js<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/api\/users\/:userId<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">userId<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nx\">userId<\/span><span class=\"p\">;<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">userData<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">userService<\/span><span class=\"p\">.<\/span><span class=\"nf\">getUserData<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Calculate ETag based on data<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">currentETag<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">calculateETag<\/span><span class=\"p\">(<\/span><span class=\"nx\">userData<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ If client sent an ETag and it matches current ETag<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">headers<\/span><span class=\"p\">[<\/span><span class=\"dl\">'<\/span><span class=\"s1\">if-none-match<\/span><span class=\"dl\">'<\/span><span class=\"p\">]<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">currentETag<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Data hasn't changed - return 304 without body<\/span>\n      <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">304<\/span><span class=\"p\">).<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">ETag<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">currentETag<\/span><span class=\"p\">).<\/span><span class=\"nf\">end<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ Data is new or changed - return full response with ETag<\/span>\n    <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">ETag<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">currentETag<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">(<\/span><span class=\"nx\">userData<\/span><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\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Server Error<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">calculateETag<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Simple hash function (use a more robust one in production)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">crypto<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">crypto<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">crypto<\/span><span class=\"p\">.<\/span><span class=\"nf\">createHash<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">md5<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">update<\/span><span class=\"p\">(<\/span><span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">)).<\/span><span class=\"nf\">digest<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">hex<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B9%D8%A7%D9%85%D9%84_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1_%D8%A8%D8%A7_ETAG\"><\/span>\n<p>  \u062a\u0639\u0627\u0645\u0644 \u0645\u0634\u062a\u0631\u06cc-\u0633\u0631\u0648\u0631 \u0628\u0627 ETAG<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0648\u0644:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>GET \/api\/users\/123\n\u2192 200 OK\nETag: \"a1b2c3\"\n{user data}\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0639\u062f\u06cc:<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>GET \/api\/users\/123\nIf-None-Match: \"a1b2c3\"\n\u2192 304 Not Modified\n(empty body)\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ul>\n<li>\u067e\u0627\u0633\u062e\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639\u062a\u0631<\/li>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0647\u0646\u0627\u06cc \u0628\u0627\u0646\u062f \u067e\u0627\u06cc\u06cc\u0646<\/li>\n<li>\u0647\u0645\u06cc\u0634\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%A8%D9%88%D8%AF%D9%86_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%D8%AA%D8%A7%D8%B2%D9%87_%D9%86%DA%AF%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA%D9%86_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0628\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0628\u0648\u062f\u0646 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646: \u062a\u0627\u0632\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0646\u0627\u0627\u0645\u06cc\u062f \u06a9\u0646\u0646\u062f\u0647 \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0634\u0648\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0633\u0647 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0628\u0631\u0627\u06cc \u0639\u062f\u0645 \u0627\u0639\u062a\u0628\u0627\u0631 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u0645:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1\"><\/span>\n<p>  1.<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u0628\u0647 \u0637\u0648\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u0634\u0648\u062f \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0628\u0627\u0646\u06a9 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">updateUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">updatedProfile<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Update database<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nx\">databaseService<\/span><span class=\"p\">.<\/span><span class=\"nf\">updateUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">updatedProfile<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Update cache synchronously<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nf\">setAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">updatedProfile<\/span><span class=\"p\">),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">EX<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">300<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><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\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error updating user profile:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">throw<\/span> <span class=\"nx\">error<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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><strong>\u062c\u0648\u0627\u0646\u0628 \u0645\u062b\u0628\u062a:<\/strong><\/p>\n<ul>\n<li>\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0627\u0633\u062a<\/li>\n<li>\u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/li>\n<\/ul>\n<p><strong>\u0645\u0646\u0641\u06cc \u0647\u0627:<\/strong><\/p>\n<ul>\n<li>\u06a9\u0645\u06cc \u06a9\u0646\u062f\u062a\u0631 \u0645\u06cc \u0646\u0648\u06cc\u0633\u062f<\/li>\n<li>\u0647\u0631 \u0646\u0648\u0634\u062a\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627\u0639\u062b \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AF%D8%B1_%D9%BE%D8%B4%D8%AA\"><\/span>\n<p>  2. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u067e\u0634\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u067e\u0633 \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">queue<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">better-queue<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Example queue library<\/span>\n\n<span class=\"c1\">\/\/ Create a queue for cache updates<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">cacheUpdateQueue<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">queue<\/span><span class=\"p\">(<\/span><span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">task<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nf\">setAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">task<\/span><span class=\"p\">.<\/span><span class=\"nx\">key<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">task<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">EX<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">300<\/span><span class=\"p\">);<\/span>\n    <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"kc\">true<\/span><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=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">updateUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">updatedProfile<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Update database first<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nx\">databaseService<\/span><span class=\"p\">.<\/span><span class=\"nf\">updateUserProfile<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">updatedProfile<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ Queue cache update for asynchronous processing<\/span>\n    <span class=\"nx\">cacheUpdateQueue<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">key<\/span><span class=\"p\">:<\/span> <span class=\"nx\">userId<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">updatedProfile<\/span>\n    <span class=\"p\">});<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><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\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error updating user profile:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">throw<\/span> <span class=\"nx\">error<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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><strong>\u062c\u0648\u0627\u0646\u0628 \u0645\u062b\u0628\u062a:<\/strong><\/p>\n<ul>\n<li>\u0633\u0631\u06cc\u0639\u062a\u0631 \u0645\u06cc \u0646\u0648\u06cc\u0633\u062f \u0632\u06cc\u0631\u0627 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0628\u0647 \u062a\u0639\u0648\u06cc\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f<\/li>\n<li>\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062a\u0648\u0627\u0646 \u0646\u0648\u0634\u062a\u0646 \u0628\u0627\u0644\u0627<\/li>\n<\/ul>\n<p><strong>\u0645\u0646\u0641\u06cc \u0647\u0627:<\/strong><\/p>\n<ul>\n<li>\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u0642\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u06cc \u0646\u0638\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f<\/li>\n<li>\u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%A7%D8%AE%D8%B1%D8%A7%D8%AC_%D9%85%D8%A8%D8%AA%D9%86%DB%8C_%D8%A8%D8%B1_TTL\"><\/span>\n<p>  3. \u0627\u062e\u0631\u0627\u062c \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 TTL<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u0632\u0645\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0647 \u0632\u0646\u062f\u06af\u06cc (TTL) \u0645\u0646\u0642\u0636\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Set with expiration of 5 minutes (300 seconds)<\/span>\n<span class=\"k\">await<\/span> <span class=\"nf\">setAsync<\/span><span class=\"p\">(<\/span><span class=\"nx\">userId<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">userProfile<\/span><span class=\"p\">),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">EX<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">300<\/span><span class=\"p\">);<\/span>\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>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\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><strong>\u062c\u0648\u0627\u0646\u0628 \u0645\u062b\u0628\u062a:<\/strong><\/p>\n<ul>\n<li>\u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/li>\n<li>\u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0628\u0647 \u0632\u0645\u0627\u0646 \u062e\u0648\u0628 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0647\u06cc\u0686 \u0645\u0646\u0637\u0642 \u0635\u0631\u06cc\u062d \u0639\u062f\u0645 \u0627\u0639\u062a\u0628\u0627\u0631 \u0644\u0627\u0632\u0645 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a<\/li>\n<\/ul>\n<p><strong>\u0645\u0646\u0641\u06cc \u0647\u0627:<\/strong><\/p>\n<ul>\n<li>\u067e\u062a\u0627\u0646\u0633\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 TTL<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%BE%D9%86%D9%87%D8%A7%D9%86_%DA%86%D9%86%D8%AF_%D9%84%D8%A7%DB%8C%D9%87_%D8%AA%D8%B5%D9%88%DB%8C%D8%B1_%DA%A9%D8%A7%D9%85%D9%84\"><\/span>\n<p>  \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0686\u0646\u062f \u0644\u0627\u06cc\u0647: \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0645\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0644\u0627\u06cc\u0647 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u0627\u064b \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0645\u06cc \u0634\u0648\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0644\u0627\u06cc\u0647 \u0647\u0627 \u062c\u0631\u06cc\u0627\u0646 \u06cc\u0627\u0628\u062f:<\/p>\n<ol>\n<li>\n<strong>\u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u0645\u0631\u0648\u0631\u06af\u0631<\/strong> &#8211; \u0633\u0631\u06cc\u0639\u062a\u0631\u06cc\u0646 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u060c \u062f\u0631\u0633\u062a \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u06a9\u0627\u0631\u0628\u0631<\/li>\n<li>\n<strong>CDN<\/strong> &#8211; \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u062a\u062d\u0648\u06cc\u0644 \u0645\u062d\u062a\u0648\u0627\u06cc \u06a9\u0645 \u062a\u0623\u062e\u06cc\u0631 \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<li>\n<strong>\u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646<\/strong> &#8211; \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u0647\u0627 \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc API<\/li>\n<li>\n<strong>\u0645\u062c\u0645\u0648\u0639\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/strong> &#8211; \u0645\u0646\u0628\u0639 \u062d\u0642\u06cc\u0642\u062a \u060c \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ol>\n<p>\u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9\u06cc \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<ul>\n<li>\u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u0628\u062a\u062f\u0627 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u06cc\u0627\u0641\u062a\u0646 \u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0646\u0632\u062f\u06cc\u06a9\u062a\u0631\u06cc\u0646 \u06af\u0631\u0647 CDN \u0645\u06cc \u0631\u0648\u062f<\/li>\n<li>\u0627\u06af\u0631 CDN \u0622\u0646 \u0631\u0627 \u0646\u062f\u0627\u0631\u062f \u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 API \u0634\u0645\u0627 \u0645\u06cc \u0631\u0633\u062f<\/li>\n<li>\u0633\u0631\u0648\u0631 API \u0628\u0631\u0627\u06cc \u0627\u0628\u0631\u062f\u0627\u062f\u0647 \u062a\u0635\u0648\u06cc\u0631 Redis \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u062d\u0627\u0641\u0638\u0647 \u0647\u0627\u06cc \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0645\u06cc \u0631\u0633\u0627\u0646\u062f<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0644\u0627\u06cc\u0647 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%87%D9%85%D9%87_%D8%A7%DB%8C%D9%86%D9%87%D8%A7_%D8%B1%D8%A7_%D8%A8%D8%A7_%D9%87%D9%85_%D8%AC%D9%85%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF_%D8%B7%D8%B1%D8%AD_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B4%D9%85%D8%A7\"><\/span>\n<p>  \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062c\u0645\u0639 \u06a9\u0646\u06cc\u062f: \u0637\u0631\u062d \u0630\u062e\u06cc\u0631\u0647 \u0634\u0645\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkdhdwvl6clvciyx428g0.png\" alt=\"\u0630\u062e\u06cc\u0631\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0637\u0631\u062d\" loading=\"lazy\" width=\"800\" height=\"501\" title=\"\"><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 API \u0647\u0627\u06cc \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u060c \u0627\u06cc\u0646 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062c\u0627\u0645\u0639 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<ol>\n<li>\n<strong>\u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u06a9\u0631\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc<\/li>\n<li>\n<strong>\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/strong> \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc<\/li>\n<li>\n<strong>\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0645\u0634\u0631\u0648\u0637<\/strong> \u0628\u0631\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627\u06cc \u06a9\u0627\u0631\u0622\u0645\u062f \u067e\u0647\u0646\u0627\u06cc \u0628\u0627\u0646\u062f<\/li>\n<li>\n<strong>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062b\u0628\u0627\u062a<\/strong> \u0628\u0627 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0647\u0627\u06cc \u0628\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0628\u0648\u062f\u0646 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0642\u0648\u06cc<\/li>\n<li>\n<strong>\u0686\u0646\u062f \u0644\u0627\u06cc\u0647 \u0631\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f<\/strong> (\u0645\u0631\u0648\u0631\u06af\u0631 \u060c CDN \u060c \u0628\u0631\u0646\u0627\u0645\u0647) \u0628\u0631\u0627\u06cc \u062d\u062f\u0627\u06a9\u062b\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0624\u062b\u0631 \u06cc\u06a9 \u0645\u0647\u0627\u0631\u062a \u0627\u0633\u0627\u0633\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 API \u0627\u0633\u062a. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0647\u0627\u06cc \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f API \u0647\u0627\u06cc REST \u0628\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u0633\u0631\u06cc\u0639 \u0648 \u0628\u0633\u06cc\u0627\u0631 \u0686\u0634\u0645\u06af\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f \u0628\u0644\u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0648 \u0622\u0645\u0627\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f: \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0628\u0627 \u0637\u0631\u0627\u0648\u062a \u062f\u0627\u062f\u0647 \u0647\u0627 \u0645\u062a\u0639\u0627\u062f\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0631\u0648\u06cc\u06a9\u0631\u062f \u062f\u0631\u0633\u062a \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0627\u0635 \u062e\u0648\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u060c \u0648 API \u0647\u0627\u06cc \u0634\u0645\u0627 \u0627\u0632 \u0632\u0645\u0627\u0646 \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647 \u0648 \u06a9\u0627\u0647\u0634 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u062a\u0634\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u0632 \u0686\u0647 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 API \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u061f \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631\u0627\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f!<\/p>\n<hr\/>\n<p><em>\u0645\u062b\u0644 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u061f \u0628\u0631\u0627\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0648\u0633\u0639\u0647 API \u060c \u0637\u0631\u0627\u062d\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u060c \u0645\u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/em><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u062f\u0646\u06cc\u0627\u06cc\u06cc \u0631\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u06a9\u0647 API \u0634\u0645\u0627 \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f \u060c \u0631\u0639\u062f \u0648 \u0628\u0631\u0642 \u0633\u0631\u06cc\u0639 \u060c \u0628\u062f\u0648\u0646 \u0634\u06a9\u0633\u062a\u0646 \u0639\u0631\u0642 \u060c \u062a\u0631\u0627\u0641\u06cc\u06a9 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0622\u0631\u0627\u0645\u0634 \u062f\u0631 \u0645\u06cc \u0622\u0648\u0631\u062f. \u0627\u06cc\u0646 \u0642\u062f\u0631\u062a \u0630\u062e\u06cc\u0631\u0647 \u0645\u0624\u062b\u0631 \u0627\u0633\u062a! \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u060c \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u0631 \u0622\u0646\u0686\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":99669,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02ec8xtjjhk49w1glsdz.jpeg","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-99668","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\/99668","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=99668"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99668\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/99669"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=99668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=99668"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=99668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}