آشنایی با کش در دنیای فن آوری
در علوم کامپیوتر، کش یا حافظه پنهان یک مکان ذخیرهسازی است که برای ذخیره موقت دادههای مورداستفاده توسط سرورها، برنامهها و مرورگرها برای سرعت بخشیدن به زمان بارگذاری استفاده میشود. بسته به کاربرد، تقریباً هر ماشینی، چه نرمافزاری چه سختافزاری، نوعی حافظه پنهان دارد و از آن استفاده میکند. در این پست از مجله هاست ایران میخواهیم در رابطه با کشینگ و نحوه کار آن به گفتگو بپردازیم.
کش چیست؟
دادههای ذخیرهشده در حافظه پنهان یا همان cache اطلاعات ذخیرهشده در یک مکان خاص است که برای سرعت بخشیدن به جمعآوری و انتقال دادهها استفاده میشود. برای مثال در مورد یک وبسایت، حافظه پنهان به شما این امکان را میدهد که هر بار که به صفحه دسترسی پیدا میکنید، منابع خاصی را بدون بارگیری آنها از سرور بارگیری کنید، مانند فونتها یا نمادها. برای سرورها، دادههای کش میتوانند دادههای پویا باشند که بهصورت HTML ساده ذخیره میشوند تا زمان بارگذاری صفحه را سرعت بخشند.
نمونههایی از کش ها
بسته به مورداستفاده خود، ممکن است از یکی از این کش ها استفاده کنید:
کش مرورگر وب
این cache در مرورگر انجام میشود. همه مرورگرها دارای یک حافظه محلی هستند که از آن برای بازیابی منابعی که قبلاً به آنها دسترسی داشتهاید استفاده میکنند. این حافظه پنهان خصوصی است زیرا منابع ذخیرهشده به اشتراک گذاشته نمیشوند. مرورگرها دادههایی مانند کل صفحات وب را برای سرعت بخشیدن به زمان بارگذاری cache میکنند.
مقاله پیشنهادی: مقایسه ۶ پلاگین برتر کش وردپرس
کش پروکسی
این cache، بین مشتری و سرور مبدأ در سرور پروکسی انجام میشود. کش پروکسی یک حافظه پنهان مشترک است که توسط چندین مشتری استفاده میشود و معمولاً توسط ارائهدهندگان نگهداری میشود. سرورهای پروکسی اجازه میدهند دادهها با کاربران بیشتری به اشتراک گذاشته شود و از cache برای جلوگیری از بازیابی دادهها از پایگاه داده هر بار که درخواست میشود، استفاده میکنند.
کش دروازه
کش دروازه که «پراکسی معکوس» نیز نامیده میشود، یک لایه ذخیرهسازی جداگانه و مستقل بین مشتری و برنامه است. درخواستهای ارسالشده توسط مشتری را ذخیره میکند و آنها را به برنامه ارسال میکند. بهطور مشابه، پاسخها را از برنامه برای مشتری ارسال میکند. اگر منبعی دوباره درخواست شود، کش قبل از رسیدن به برنامه، پاسخ را برمیگرداند. Cache دروازه مشترک است، اما توسط سرورها، نه کاربران و شامل مواردی مانند نقطه پایانی یک API است.
کش اپلیکیشن
این کش در اپلیکیشن انجام میشود. این به توسعهدهنده اجازه میدهد تا مشخص کند که مرورگر چه عناصری را در حافظه پنهان نگه دارد و آنها را حتی در حالت آفلاین در دسترس کاربران قرار دهد. این عناصر ممکن است شامل قابلیتهای ویرایش محلی اسناد خاص (بهعنوانمثال: Google Docs) یا ذخیره دادهها در یک پایگاه داده موقت فقط برای همگامسازی با پایگاه آنلاین باشد که دستگاه به اینترنت متصل شد.
کش سرور
کش سرور شبیه کش مرورگر است، فقط به این دلیل که دادهها را بهجای ذخیره محلی در سمت سرور نگه میدارد. Cache سرور اغلب برای ذخیره پرسوجوهای پایگاه داده استفاده میشود تا از اجرای وظایف حافظه و CPU فشرده برای پرسوجوهای رایج جلوگیری شود. دادههای ذخیرهشده سرور شامل صفحات وب ایجادشده بهصورت پویا، پاسخهای API پرسشهای پایگاه داده و موارد دیگر است.
Cache چگونه کار میکند؟
در cache کپی از دادهها در مکانهای تعیینشده، بهصورت محلی یا روی سرور ذخیره میشوند. این باعث صرفهجویی در منابعی میشود که سعی میکنند پرسوجوهای دشوار را روی پایگاه دادهها یا انجام دهند. مرورگرها قبل از درخواست منبع از سرور، این مکانها را بررسی میکنند و در صورت یافتن آن را بازیابی میکنند و این بهجای بارگیری از حافظه اصلی و بسیار سریعتر است.
چرا حافظه پنهان مهم است؟
حافظه پنهان بسیار مهم است زیرا به توسعهدهندگان کمک میکند عملکرد را بهبود بخشند. در اینجا مزایای اصلی آن آورده شده است:
- کش برای سرعت بخشیدن به بازیابی دادهها بسیار مهم است. این به بارگذاری سریعتر وبسایت کمک میکند و محتوا را در سریعترین زمان ممکن به کاربران ارائه میدهد. بدون استفاده از حافظه پنهان، هر بار که درخواست جدیدی ارسال میشود، سرور باید کل بسته داده را بدون توجه به اینکه اطلاعات موجود در پاسخ تغییر کرده است یا خیر ارسال کند.
- Cache ها به شما کمک میکنند در انتقال داده صرفهجویی کنید. برنامههایی که اغلب استفاده میکنید مجبور نیستند هر بار که به صفحه دیگری میروید، کل صفحه را دانلود کنند، فقط فایلهای تغییریافته یا جدید دانلود میشوند.
- حافظه پنهان همچنین به شما امکان میدهد از برنامههای خاصی در حالت آفلاین استفاده کنید. یک مثال عالی از آن Google Docs است.
- کش را میتوان بهعنوان یک سرویس بازیابی مورداستفاده قرارداد. در برخی موارد، دادهها ممکن است خراب شوند. اگر نسخه کش شده برنامه یا وبسایت را داشته باشید، میتوانید از آن بهعنوان پشتیبان استفاده کنید.
معایب cache ها
درحالیکه بیشتر فناوریهای مدرن برای اطمینان از سرعت وبسایت و تجربه کاربری روان بر استفاده از کش متکی هستند، اما برای آن معایبی نیز وجود دارد:
- درخواستهای ذخیرهسازی هر چیزی که بهصورت محلی یا روی سرور ذخیره میکنید، فضای زیادی را اشغال میکند. این میتواند باعث کند شدن ماشین تا توقف آن شود. گذر از این مشکل نسبتاً ساده است زیرا اکثر کش ها دارای یک گزینه به نام «پاک کردن کش» هستند که آن را پاک میکند و تمام آن فضا را آزاد میکند.
- نسخه خراب حافظه پنهان میتواند یک برنامه را خراب کند. کش شما میتواند بهعنوان یک نسخه پشتیبان استفاده شود، میتواند بهراحتی با تبدیل برنامه به دادههای خراب، اطلاعات را کاملاً بیفایده یا حتی بدتر از آن ایجاد خطا در وبسایت، نتیجه معکوس داشته باشد. برای اینکه بتوانید دوباره از برنامه استفاده کنید، باید کش را بهصورت دستی پاککنید.
- تنها اتکا به حافظه نهان میتواند باعث عدم تطابق نسخه پلتفرم یا سایت بین مشتری و سرور شود.
پاک کردن کش به چه معناست؟
دادههای ذخیرهشده در حافظه پنهان گاهی اوقات میتوانند فضای زیادی را در دستگاه شما اشغال کنند. اگر تاریخ انقضا نداشته باشند یا تنظیمنشده است که بهطور خودکار پاک شود، باید خودتان این کار را انجام دهید.
یکی دیگر از دلایلی که باید کش خود را پاککنید، این است که داده های خراب برنامه در حافظه نهان ذخیرهشده است. در این مورد، سادهترین راهحل این است که حافظه پنهان را پاککنید و یک نسخه کاملاً جدید را روی دستگاه خود ذخیره کنید. به خاطر داشته باشید که هر بار که حافظه پنهان خود را پاک میکنید، باید منابعی را برای بارگیری یک نسخه دیگر از دادههای وبسایت یا برنامه صرف کنید که ممکن است وقتگیر باشد.
چگونه دادههای ذخیرهشده را پاککنیم
بسته به پلتفرمی که از کش آن استفاده میکنید، روشهای مختلفی برای پاک کردن دادههای کش وجود دارد. برای مثال در کش مرورگر با رفتن به منوی تنظیمات در مرورگر خود و کلیک بر روی دکمه «پاک کردن دادههای مرورگر» میتوانید فایلهای کش مرورگر وب را پاککنید.
پاک کردن دادهها در سرور میتواند بسیار دشوارتر باشد زیرا معمولاً هیچ برگه تنظیماتی وجود ندارد. این کار باید با دسترسی به پوشه ریشه و پیمایش به هر جایی که chase ذخیرهشده است انجام شود تا آن را بهصورت دستی حذف کنید. این کار نیاز به تخصص دارد و معمولا توسط تیم های پشتیبانی انجام میشود.
حافظه پنهان CDN چیست؟
یک CDN یا شبکه تحویل محتوا، محتوا (مانند تصاویر، ویدیوها یا صفحات وب) را در سرورهای پراکسی که نزدیکتر به کاربران نهایی هستند نسبت به سرورهای اصلی ذخیره میکند. (پراکسی سرور سروری است که درخواستهای مشتریان را دریافت میکند و آنها را به سرورهای دیگر ارسال میکند.) ازآنجاییکه سرورها به کاربر درخواستکننده نزدیکتر هستند، CDN میتواند محتوا را سریعتر ارائه دهد.
هنگامیکه یک کاربر با استفاده از CDN از یک وبسایت، محتوا را درخواست میکند، CDN آن محتوا را از یک سرور اصلی واکشی میکند و سپس یک کپی از محتوا را برای درخواستهای بعدی ذخیره میکند. تا زمانی که کاربران به درخواست خود ادامه دهند، محتوای ذخیرهشده در حافظه پنهان CDN باقی میماند.
سرورهای کش CDN کجا قرار دارند؟
سرورهای کش CDN در مراکز داده در سراسر جهان قرار دارند. به عنوان مثال Cloudflare دارای سرورهای CDN در ۲۷۵ شهر است که در سرتاسر جهان پخششدهاند تا حد امکان به کاربران نهایی دسترسی داشته باشند. CDN در ایران توسط چند شرکت از جمله شرکت هاست ایران ارائه می شود که با PoP Site های فعال و قدرتمند در مناطق جغرافیایی مختلف ایران و جهان، محتوای سایت شما را از نزدیکترین دیتاسنتر با سریعترین و امنترین حالت ممکن، در اختیار کاربران قرار میدهد. مکانی که سرورهای CDN در آن حضور دارند مرکز داده نیز نامیده میشود.
هاست ایران چگونه از کش استفاده میکند؟
CDN هاست ایران در سطح بینالمللی توزیعشده است. این شبکه Anycast است، به این معنی که همان محتوا را میتوان از هر یک از این مراکز داده تحویل داد. یک کاربر در لندن و یک کاربر در ایران هر دو میتوانند محتوای مشابه بارگیری شده از سرورهای CDN را در چند مایل دورتر مشاهده کنند. برای مشاهده قیمت CDN به وب سایت هاست ایران مراجعه نمایید.