اگر دارای یک سایت هستید که بازدید بالایی دارد، و منابع سخت افزاری که سایت شما از آن استفاده میکند محدود باشد و یا مشغول، و گاها کمبود سخت افزار مشکلاتی برای شما بوجود می آورد، این زمان هست که وارنیش (varnish) به کمک ما می آید.

وارنیش کش (varnish chache) یک شتابدهنده HTTP می باشد که برای وب سایت های داینامیک دارای بازدید بالا طراحی شده است.

وارنیش (varnish) برخلاف کش سرور ها مثل Squid که برای HTTP,SMTP,FTP به کار برده میشود، به طور تخصصی فقط بر روی HTTP متمرکز شده است، وارنیش نرم افزار منبع باز (Open Source) می باشد و تحت دو مجوز BSD منتشر شده است.

اولین نسخه وارنیش یعنی نسخه 1.0 در سال 2006 منتشر شده است، و نسخته 2.0 وارنیش 2 سال بعد یعنی در سال 2008 منتظر شده است، و در نهایت نسخه حال حاضر که نسخه 7.2  هست، در سال 2022 منتشر شده است.

پروژه وارنیش توسط یک روزنامه آنلانی نروژی طر احی و آغاز شد که به زبان C نوشته شده  و این نرم افزار برای سیستم عامل های لینوکس طراحی شده است، البته نکته جالب اینجاست که وارنیش قابلیت نصب بر روی تمامی سیستم عامل ها را دارد.

این نرم افزار توسط Poul-Henning Kamp توسعه داده شده است.

در وارنیش اطلاعات در حافظه رم سیستم ذخیره میشود، و در نهایت این برنامه تصمیم میگیرد که چه اطلاعاتی باید در رم سیستم مانده و چه اطلاعاتی باید به هارد سیستم انتقال پیدا کند.

هر وقت یک اتصالی به وارنیش به وقوع میپیوندد، در اصل این نرم افزار یک ترد (Thread) جداگانه به آن اتصال اختصاص میدهد، و تا زمانی که به محدودیت تعداد کانکشن ها برسد، و همچنین وارنیش درخواست های ورودی را در یک صف سرریز قرار میدهد.

وارنیش جهت پیکربندی خود از یک ساختار فایلی خاصی با پسوند VCL استفاده میکند که به وسیله زبان C اسکریپت نویسی برای آن انجام خواهد شد.

Varnish همچنین از 2 قابلیت Load Balancing و Round Robin به خوبی پشتیبانی میکند.

یکی از قابلیت هایی که به Varnish مربوط میشود و باعث افزایش کاربردی آن است، قابلیت نوشتن پلاگین برای آن است، که شما با نوشتن و استفاده از ماژول هایی که برای وارنیش نوشته شده است، میتوانید به خیلی از نیازهای خود جواب دهید. یکی از معروف ترین ماژول های نوشته شده برای وارنیش Varnish Security  می باشد.

برای اطلاع از تعرفه پشتیبانی شبکه کلیک کنید

ولی عمده مشکل کش سرور برای طراحان وب است. در حال کارکردن روی یک پروژه وب هستید و همه ی تغییرات را روی کامپیوتر محلی خود انجام داده اید و آماده فرستادن تغییرات هستید و تغییرات را می فرستید و سپس با خیال آسوده می روید تا نتیجه آنلاین را ببینید

اما پروژه شما بدون اعمال تغییرات نشان داده خواهد شد و هر چه کلید F5 )برای بروزرسانی سایت( را می زنید بی فایده است و نیز با زدن کلید Ctrl+F5 )برای خالی کردن کش مرورگر(را می زنید باز هم تغییرات شما مشاهده نمی شود. اما راه حل این مشکل چیست؟

راه اندازی Cache Server Varnish

مشکل کش سرور برای طراحی وب سایت

شما می دانید که براساس پروتکل HTTP به همراه هر درخواست می توان یک Query String فرستاد.

وهمچنین / http://sample.com index.php?keyword=iran و / http://sample.com index.php?keword=qom دو نشانی متفاوت به حساب می آیند، اگر چه هر دو در حال بارگذاری یک فایل). index php ( مشترک هستند کش سرور هم این دونشانی را یکسان در نظر نگرفته و هر دو را مجددا از روی سرور بارگذاری می کند.

به همین منظور برای جلوگیری از کش شدن یک سایت از کدی استفاده می کنیم تا هر بار یک عدد Random تولید شده و کش سرور گول بخورد. که آدرسهایی شبیه به . http://sample.com/style ۱=css?q و ۲=http://sample.com/style.css?q یکسان نخواهند بود.

توجه داشته باشید که وقتی برنامه نویسی سایت شما تمام شد و دیگر نخواستید تغییری انجام دهید، حتما این مکانیزم را از صفحات خود حذف کنید. زیرا Cache server با همه معایبی که برای طراحان وب دارد، در نهایت سبب افزایش سرعت صفحات برای کاربران نهایی هم خواهد شد.

راه اندازی Cache Server Varnish : اگر دارای سایتی هستید که بازدید بسیار بالایی دارد. اگر منایع سخت افزاری سایت شما بسیار مشغول هست و اگر دارای یک سایت دروپالی با بازدید بسیار بالا هستید وارنیش می تونه کمک بسیار بزرگی برای شما باشد.وارنیش از دیگر اپلیکیش های سروری هست که در سایت هایی که طراحی کردم از ان استفاده شده است.وارنیش کش varnish cache یک شتاب دهنده HTTP هست که طراحی شده است برای وب سایت های داینامیک با بازدید بسیار بالا.Varnish بر خلاف کش سرور های دیگری مثل Squid که برای HTTP و SMTP و FTP به کاربرده می شود. به طور تخصصی بر روی HTTP متمرکز شده است.وارنیش منبع باز است، تحت دو مجوز BSD منتشر شده است.

نسخه ۱٫۰ از وارنیش در سال ۲۰۰۶ منتشر شد. وارنیش ۲٫۰ در سال ۲۰۰۸ منتشر شد، و وارنیش ۳٫۰ در سال ۲۰۱۱ منتشر شد.پروژه وارنیش توسط یک روزنامه آنلاین نروژی آغاز شده است. به زبان C نوشته است و برای سیستم عامل های یونیکس طراحی شده است البته باید بگم که وارنیش قابلیت نصب بر روی همه سیستم عامل های معروف را دارد.

توسط Poul-Henning Kamp, توسعه داده می شود.اطلاعات در  وارنیش در حافظه رم سیستم ذخیره می شود.و سپس تصمیم می گیرد که چه اطلاعاتی در حافظه رم و چه اطلاعتی به هارد سیستم انتقال پیدا کند.وارنیش با هر اتصال بک ترد جداگانه اختصاص می دهد تا وقتی که به محدودیت تعداد کانکشن برسدو همپچنین درخواست های ورودی جدید را در صف سر ریز قرارمی دهد.که وارنیش برای پیکربندی خود از ساختار فایلی با پسوند VCL استفاده می کند که  به وسیله زبان C اسکریپت نویسی برایش انجام می شود Varnish همچنین از  load balancing و round robin به خوبی پشتیبانی می کند.

قابلیت نوشتن پلاگین ها برای وارنیش از جمله مزایای بسیار خوب ان هست که شما با نوشتن و یا استفاده از ماژول های نوشته شده برای وارنیش می تونید به خیلی از نیازهای خود جواب بدهید از جمله ماژول های معروف می توانم به Vanirsh security را نام ببرم.

راه اندازی Cache Server Varnish : وارنیش باتوجه به ساختاری که دارد و قابلیت برقراری ارتباط بسیار موثر و عالی در سایت های دروپال بسیار طرفدار دارد و در اکثر سایت های دروپالی پربازدید یک پای ثابت هست سایت اصلی دروپال برای پاسخگویی به بازدید بسیار بالایش از وارنیش استفاده می کند در اکثر سایت های پربازدیدی که خودم کار کارده ام از وارنیش برای بالا بردن سرعت پاسخگویی استفاده در وب سایت العالم وارنیش در زمانی که به این سایت حملات شدیدی می شد بسیار فوق العاده عملکرد و بدون اینکه منابع سرور درگیر باشد و … به خوبی از پس ۶۰۰ مگابایت پهنای باید لحظه بر آمد و شخصا شاهد چنین ترافیکی بودم. در زمانی که به سایت حمله می شود نقش وب سرور خیلی مهم هست و وارنیش به عنوان یک شتابدهنده برای انجین ایکس به عملکرد عالی دارد.

البته باید ذکر کنم که وارنیش اگر به خوبی کانفیگ نشود مشکلات بسیاری رو برای سایت شما به وجود می اورد از جمله این مشکلات برای سایت هایی بیشتر نمایان می شود که سایت شما در لحظه در حال بروزرسانی هست و مطالب صفحات شما تغییر پیدا می کند بیشتر نمود می کند واین هم دلیلش این هست که وارنیش صفحات سایت شما رو در کش خودش ذخیره می کند تا در درخواست های بعدی بدون وقفه و فراخوانی وب سرور بتواند پاسخگوی درخواست ها باشد.