فهرست محتوا
وقتی شما آدرس اینترنتی را در نوار جستجوی مرورگر خود تایپ میکنید و دکمه Enter را میزنید، موارد زیادی در پشت صحنه و در سمت سرور اتفاق میافتد. به عنوان مثال مرورگر (کروم، سافاری و …) برای پیدا کردن آدرس IP وبسایت مورد نظر شما، درخواستی را به سمت سرور DNS ارسال میکند یا مثلا وبسرورها فایلهای مرتبط با صفحات وب مانند تصاویر و فایلهای HTML و جاوا اسکریپت را به سمت مرورگرها ارسال میکنند. اما این تمام ماجرا نیست و فناوریهای دیگری مانند کشینگ، لود بالانسینگ، CDN و نیز وجود دارند که باعث افزایش سرعت بارگذاری صفحات وب و بهبود تجربه کاربری بازدیدکنندگان آنها میشوند. ما در این مقاله میخواهیم به صورت کامل شما را با یکی از بهترین نرمافزارهای کشینگ یعنی وارنیش آشنا کنیم. وارنیش یا Varnish نوعی پروکسی معکوس است که با استفاده از قابلیت کشینگ حرفهای خود میتواند نقش بسیار مؤثری در افزایش سرعت بارگذاری صفحات وب ایفا کند. اما کش دقیقا چیست؟
کش چیست؟
شاید شما هم مانند بسیاری از افراد اصطلاح کش را شنیده باشید اما معنای دقیق آن را نمیدانید. کش (Cache) به نرمافزار یا سختافزاری گفته میشود که با ذخیرهسازی موقت محتوای وبسایتها و اپلیکیشنها در حافظه خود باعث بهبود سرعت دسترسی کاربران به آنها میشود. به عنوان مثال وقتی برای اولینبار از وبسایتی بازدید میکنید، حافظه کش مرورگر شما یک نسخه کپی از محتوای آن را گرفته و در خود ذخیره میکند و بنابراین وقتی دوباره از آن سایت بازدید کنید، محتوای آن با سرعت بسیار بیشتری لود خواهد شد.
وارنیش چیست؟
وارنیش یک پروکسی معکوس HTTP و همچنین یک ابزار کشینگ هاست اشتراکی، سرور مجازی و سرور اختصاصی نصب کرد اما ممکن است برخی از شرکتهای ارائهدهنده خدمات هاستینگ از آن پشتیبانی نکنند و علاوه بر این وارنیش چندان مناسب هاستهای اشتراکی نیست زیرا این نوع سرویسها از سفارشیسازی بسیار محدودی برخوردار بوده و ممکن است کاربران آنها در پیکربندی وارنیش دچار مشکل شوند. توجه داشته باشید که وارنیش به طور خاص برای سیستمهای شبه-یونیکس و مبتنی بر (سنتاوس، دبیان، ، اوبونتو و …) طراحی شده و در نتیجه بیشتر مناسب سرورهای لینوکسی است. Varnish 7.3 نیز آخرین نسخه وارنیش تا لحظه نگارش این مقاله میباشد که در تاریخ ۱۵ مارس ۲۰۲۳ منتشر شد.
و حرفهای است که با نصب و فعالسازی آن میتوانید سرعت تحویل محتوای وبسایت خود به کاربران را تا چندین برابر افزایش دهید که البته این میزان تا حد زیادی بستگی به نوع معماری وبسایت شما دارد. وارنیش میتواند نیاز سرورها به مورد نیاز خود را تا ۴۰۰٪ کاهش دهد که این موضوع میتواند به بهبود عملکرد سرور شما کمک فراوانی کند. این نرمافزار امروزه یکی از محبوبترین نرمافزارهای کشینگ موجود در بازار بوده و میلیونها نفر از سرتاسر دنیا از آن استفاده میکنند و شما با استفاده از وارنیش میتوانید تقریبا هر نوع فایلی را به صورت کش ذخیره کنید. این ابزار کشینگ را میتوان بر روی هر ۳ نوع سرویس میزبانی یعنیVCL چیست؟
وارنیش دارای زبان برنامهنویسی به نام VCL (مخفف Varnish Configuration Language) است که با استفاده از آن میتوانید مشخص کنید که وارنیش چگونه درخواستها را بررسی کرده و با سرورهای سمت
تعامل کند. وظایف VCL در کل شامل موارد زیر میشود:- تعیین دستورالعملهای مرتبط با کشینگ
- و دستکاری
- تعیین نحوه تعامل وارنیش با سرور
- اجرای سازوکار
- مدیریت درخواستهای ورودی
- ایجاد صفحات خطای سفارشی
- فشردهسازی محتوا
- ادغام با
- و …
وارنیش چگونه کار میکند؟
وارنیش همانطور که اشاره شده نوعی پروکسی معکوس بوده و وظیفه اصلی آن ذخیرهسازی موقت فایلها با هدف بهبود سرعت دسترسی کاربران به محتوای وبسایتها میباشد. وارنیش مانند هر پروکسی معکوس دیگری میان کلاینت و وبسرور قرار گرفته و درخواستهای HTTP ورودی را قبل از ارسال به سمت وبسرور (آپاچی، انجینایکس و …) مورد بررسی قرار میدهد. اگر محتوای درخواستی کاربر در حافظ وارنیش ذخیره شده باشد آن را به سمت او میفرستد. در غیر این صورت محتوای مورد نیاز کاربر را از وبسرور و یا سرور مربوطه گرفته و پس از ذخیرهسازی در حافظه خود، آن را به سمت مرورگر وب کاربر میفرستد. با وجود ابزار کشینگی مانندی وارنیش دیگر نیاز نیست کلاینتها هر بار به صورت مستقیم با سرورها ارتباط برقرار کنند. شما برای استفاده از این ابزار کشینگ باید ابتدا از طریق صفحه دانلود سایت وارنیش و یا یکی از ابزارهای مدیریت پکیج لینوکس (apt-get و …)، آن را دانلود و بر روی سرور خود نصب کنید و سپس میتوانید بخشهای مختلف نرمافزار وارنیش را با توجه به ظرفیت سرور و نیازهای وبسایت خود پیکربندی کنید.
مراحل کشینگ فایلها با استفاده از وارنیش
حالت کش هیت:
۱. ارسال درخواست:
کاربر در ابتدا آدرس وبسایت مورد نظر خود را وارد نوار جستجوی مرورگر خود کرده و دکمه Enter را میزند. مرورگر سپس یک درخواست HTTP ایجاد کرده و آن را به سمت سرور میفرستد. توجه داشته باشید که وارنیش بیشتر مناسب درخواستهای GET و
میباشد.۲. پاسخ به درخواست:
نرمافزار وارنیش درخواست ارسالی را دریافت کرده و سپس به منظور پیداکردن محتوای صفحه وب مورد نظر، حافظه کش خود را مورد بررسی قرار میدهد. اگر فایلهای درخواستی موجود باشند، آنها را به سمت کلاینت یا همان مرورگر میفرستد. به این حالت در اصطلاح کش هیت (Cache Hit) میگویند.
حالت کش میس:
۱. ارسال درخواست:
کاربر از طریق مرورگر درخواستی را به سمت سرور میفرستد.
۲. ارسال درخواست به وبسرور
در این حالت وارنیش درخواست کاربر را مورد پردازش قرار داده و به دلیل موجود نبودن محتوای مورد نیاز کاربر، آن را به سمت وبسرور میفرستد.
۳. دریافت فایلها از وبسرور
وبسرور محتوای درخواستی کاربر را از سرور گرفته و آن را در اختیار وارنیش قرار میدهد. به حالتی که در آن دادهها در حافظه کش موجود نباشند نیز کش میس (Cache Miss) میگویند.
۴. ارسال پاسخ به کلاینت:
وارنیش محتوای دریافتی را در حافظه کش خود به نام Storage backends ذخیره کرده و سپس آنها را به سمت مرورگر کاربر ارسال میکند.
توجه: علاوه بر وارنیش، فناوریها و ابزارهای مختلفی مانند CDN، DNS، مرورگر و پروکسی معکوس نیز میتوانند در فرآیند کشینگ مشارکت داشته باشند.
مهمترین ماژولهای وارنیش
وارنیش دارای ماژولهای مختلفی است که هر کدام برای هدف خاصی ایجاد شدهاند. در ادامه با مهمترین آنها آشنا میشوید:
geoipـvmod
ماژولی است که این امکان را به وارنیش میدهد تا وظایف خود را بر اساس موقعیت مکانی کاربر انجام دهد.
headerـvmod
با استفاده از این ماژول میتوانید هدرهای پروتکل HTTP را قبل از ارسال به کلاینت دستکاری کنید.
vmod_basicauth
ماژول
وارنیش است که با استفاده از آن میتوانید کاربران را برای دسترسی به محتواهای محافظتشده ملزم به واردکردن اطلاعاتی مانند نام کاربری و گذرواژه کنید.vmod_var
این ماژول امکان ایجاد متغیرهای سفارشیسازی شده را در VCL فراهم کرده و از انواع مختلفی از ، متغیرها، اعداد حقیقی و آدرسهای IP پشتیبانی میکند.
vmod_vsthrottle
سرورهایی که از وارنیش استفاده میکنند با استفاده از این ماژول میتوانند محدودیتهایی را بر روی ترافیک شبکه اعمال کنند.
vmod_dbrw
با استفاده از این ماژول میتوانید دستورالعملهای بازنویسی پایگاهداده ایجاد کنید. این ماژول بیشتر مناسب وبسایتهایی است که نیاز به انجام بازنویسیها و متعددی دارند.
مبتنی برvmod-modsecurity
با فعالسازی این ماژول میتوانید فایروال وباپلیکیشن Modsecurity را با وارنیش ادغام کنید. Modsecurity نوعی WAF یا فایروال وباپلیکیشن است که میتواند از وبسایت شما در برابر حملات و تهدیدات سایبری مختلفی مانند دیداس محافظت کند.
vmod_redis
این امکان را به شما میدهد تا با استفاده از VCL، امکانات دو نرمافزار کشینگ وارنیش و ردیس را با هم ادغام کنید.
برای کسب اطلاع در مورد سایر ماژولها به وبسایت رسمی وارنیش مراجعه کنید.
وارنیش چه مزایایی دارد؟
- کمک به کاهش مصرف پهنایباند و سایر منابع
- کمک به کاهش هزینههاو مدیریت بهتر سرور
- مجهز به VCL و ماژولهای مختلف
- کاهش فشار وارده بر سرور
- و سفارشیسازی بالا
- کاهش زمانبارگذاری صفحات وب
- مانیتورینگ سلامت سرور
- پشتیبانی از و ESI
- متنباز و رایگان بودن
- مجهز به قابلیت لود بالانسینگ
- بهبود سئو و رتبه وبسایتها در
معایب وارنیش کدامند؟
- عملکرد نه چندان خوب در کشینگ محتوای دینامیک
- عدم پشتیبانی از و درخواستهای
- نبود قابلیت بهروزرسانی (Real-time)
- نبود پشتیبانی بومی از SSL
- پیچیدگی پیکربندی VCL
- پشتیبانی ضعیف از ویندوز
وارنیش مناسب چه نوع وبسایتهایی است؟
- سرویسهای پخش ویدئویی (نتفلیکس و …)
- وبسایتهای با تعداد بالا
- وبسایتهای پر ترافیک
چه وبسایتهایی نباید از وارنیش استفاده کنند؟
وبسایتهایی که:
- حاوی دادهها و فایلها حساسی هستند.
- از هاست اشتراکی استفاده میکنند.
- محتوای آنها دائم تغییر میکند.
- بسیار وابسته به
سؤالات متداول
آیا استفاده از وارنیش دشوار است؟
جواب این سؤال بستگی به میزان آشنایی شما با مفاهیم مرتبط با کشینگ و سابقه شما در استفاده از ابزارهای کشینگ دارد. در مجموع استفاده از وارنیش چندان دشوار نبوده و با کمی جستجو در منابع آموزشی آنلاین مانند صفحه راهنمای رسمی وارنیش میتوانید با نحوه کار با آن آشنا شوید.
آیا وارنیش مناسب وبسایتهای وردپرسی است؟
دارندگان وبسایتهای وردپرسی میتوانند بدون هیچ مشکلی از وارنیش استفاده کنند اما توجه داشته باشید که وارنیش برای وبسایتهای وردپرسی که حاوی تعداد زیادی محتوای دینامیک هستند، مناسب نیست.
آیا میتوان وارنیش را با سرویسهای ابری ادغام کرد؟
بله شما میتوانید وارنیش را با انواع مختلفی از سرویسهای مرتبط با رایانش ابری مانند SaaS ادغام کرده و با اینکار سرعت تحویل محتواهای ذخیرهشده در فضای ابری به کاربران را افزایش دهید.
وارنیش چه نوع فایلهایی را ذخیره میکند؟
فایلهای
، ،JavaScript، ، تصاویر، ویدئوها، فونتها، پیدیاف و … از جمله فایلهایی هستند که وارنیش میتواند در حافظه کش خود ذخیره کند.مهمترین جایگزینهای وارنیش کدامند؟
ممکشد، Squid، ردیس، W3 Total Cache و TinyProxy از مهمترین جایگزینهای وارنیش هستند.
منابع: Varnish-software ، Makeuseof و Section