مقاله کش سرور(Cache server paper)
به عنوان مثال سایت GOOGLE را در نظر بگیرید. کاربران زیادی هر روزه از موتور جستجوی GOOGLE استفاده می کنند.اگر همه کاربران سایت GOOGLE را از وب سرور اصلی این سایت دریافت کنند ترافیک شبکه به شدت افزایش می یابد و همچنین صف طولانی از درخواست ها در سمت وب سرور سایت GOOGLE ایجاد می شود و سرعت دسترسی کاربران را به شدت کاهش می دهد. اما اگر در شبکه CACHE SERVER وجود داشته باشد اولین کاربر درخواست خود را از وب سرور اصلی دریافت می کند.محتویات این درخواست بر روی CACHE SERVER ذخیره می شود.از این پس همه کاربران که بخواهند به موتور جستجوی GOOGLE دسترسی داشته باشند به جای دریافت آن از وب سرور اصلی سایت آن را از CACHE SERVER دریافت می کنند.این تکنیک مزایای بسیاری دارد که عبارتند از:
1. کاهش تاخیر
2. کاهش ترافیک
3. کاهش استفاده از پهنای باند
4. کاهش هزینه ISP ها
5. افزایش کارایی
6. قابلیت توسعه پذیری وب ساتهای اینترنتی
7. افزایش رضایت کاربر
اما عليرغم مزاياي فوق مساله وجود Cache در اينترنت مشكلاتي را سبب شده است كه بيشتر ناشي از فهم نادرست عملكرد آنها و قدرت مديران سايتها در كنترل آنها ست. نگرانيهايي در ارتباط با وجود Cache در ميانه راه ميان Client و Server وجود دارد:
ابتدا نگراني مديران سايت ها در از دست دادن كنترل سايتها:
مدیران سایت ها همواره نگران این مساله هستند که مطالب جدید و صفحات به روز شده سایتهایشان از دید کاربران مخفی بماند و یا شمارنده های سایتهایشان به درستی کار نکند که علت اصلی این مشکل عدم پیکربندی صحیح CACHE در سطح اینترنت است.
مساله به روز بودن وب سایتهاي درخواستي از جانب :Client
کاربران در مناطق و یا کشورهایی که اینترنت پرسرعت در سطح ملی در آنها پیاده سازی نشده و یا هزینه دسترسی به اینترنت در آن مناطق بسیار بالاست همواره با مشکل عدم مشاهده صفحات به روز شده وب سایتها یا عدم جستجوی صحیح موتور های جستجو (عدم نمایش آخرین محتوای اضافه شده به موتور های جستجوی ) مواجه هستند.
علت اصلی این مشکل این است که سرویس دهندگان اینترنت(ISP) به منظور کاهش هزینه ها همواره سایتهایی را که بازدید کنندگان زیادی دارند ذخیره کرده و به جای اینکه نسخه به روز شده وب سایت را در اختیار کاربران قرار دهند درخواست کاربر را با نسخه ذخیره شده و قدیمی پاسخ می دهند یا به عبارت دیگر internet offline را برای کاربر فراهم می کنند.
Cache server چیست؟
یک سرور اختصاصی شبکه یا سرویسی است که مسئولیت ذخیره سازی صفحات وب یا دیگر محتویات اینترنت را به صورت محلی بر عهده دارد.cache server ها به منظور کاهش ترافیک و افزایش سرعت شبکه در ISP ها ٬ شبکه های اینترانت ٬ سازمانهای بزرگ و وب سایتها به کار می رود.
Cache server ها دونوع اند:
1. سخت افزاری :
به صورت یک سرور اختصاصی معمولا در ISP ها و یا در مکانهایی که ترافیک شبکه زیاد است استفاده می شود.
2. نرم افزاری:
در اين حالت يك محصول نرم افزاري جداگانه عرضه مي شود كه بر روي سيستم استاندارد موجود نصب مي گردد و در اين حالت نياز به يك Platform سخت افزاري مورد نياز اين نرم افزار داریم معمولا برای کاهش ترافیک خروجی در سازمانها ٬ ادارات و شرکتها استفاده می شود.
بعنوان مثال از نرم افزار Squid مي توان نام برد.
|
License |
REVERSE MODE |
FORWARD MODE |
سیستم عامل |
نوع |
نام |
|
COMMERICAL |
YES |
YES |
LINUX |
سخت افزاری |
ApplianSys,CACHEbox |
|
COMMERICAL |
YES |
YES |
SGOS |
سخت افزاری |
Blue Coat ProxySG |
|
2-clause BSD |
YES |
NO |
Linux, Unix |
نرم افزاری |
Nginx |
|
Commercial |
NO |
YES |
Windows |
نرم افزاری |
Microsoft ISA |
|
GNU GPL |
YES |
YES |
LINUX,UNIX WINDOWS |
نرم افزاری |
Squid |
|
Apache License 2.0 |
YES |
NO |
Linux, Unix |
نرم افزاری |
Traffic Server |
|
BSD |
YES |
NO |
Linux, Unix |
نرم افزاری |
Varnish |
|
Commercial |
NO |
YES |
Windows |
نرم افزاری |
WinGate |
هدرهاي HTTP:
هدرهای Http اطلاعاتی هستند كه در پی درخواست يك صفحه وب، از سرويس گيرنده به سرويس دهنده و برعكس فرستاده می شود. به عبارت ديگر وقتی شما يك URL را درخواست می كنيد سرويس گيرنده شما به جز آدرس اينترنتی يك سری اطلاعات ديگر را كه شامل نوع مرورگر، IP ، نوع سيستم عامل و ... ميباشد را به سرويس دهنده ارسال می كند. همچنين وقتی سرويس دهنده درخواست شما را پس می فرستد يك مجموعه از اطلاعات مربوط به سرويس دهنده شامل مسير فيزيكی صفحه درخواست شده، نام نرم افزار سرويس دهنده وب، Query String، و ...نيز همراه آن ارسال می كند كه به آنها متغيرهای محيطی يا Environmental Variables می گويند.یکی از کاربردهای HTTP HEADERها کنترل عمل ذخیره سازی محتوای اینترنتی است.
پرونكل HTTP و مكانيسم هاي كنترل رفنار و عملكرد Cacheها:
Validation Model
هنگاميكه Cache يك مدخل فاسد داشته باشد، در پاسخگويي به درخواستهاي ارسالي از جانب Client ها براي آن شيء، نخستين كاري كه بايد انجام دهد مطابقت دادن نسخه موجود در Cache (نسخه Stale) با نسخه اصلي موجود در Server است. (و يا با نسخه اي معتبر در يكي از Cacheهاي مياني)، تا ببيند كه آيا نسخه موجود در Cache هنوز قايليت استفاده دارد يا خير؟ اين عمليات را عمليات معتبرسازي (Validating) مدخل موجود در Cache مي نامند و يكي از مكانيسم هاي اصلي مورد استفاده توسط Cache براي بهبود بخشيدن به عملكرد سايتهاست.
توجه داريم كه به صورت بالقوه دونوع هزينه و سربار در اين فرآيند مي تواند نهفته باشد. نخست سربار مربوط به ارسال پاسخ كامل از سوي Server در حالتيست كه نسخه موجود در Cache هنوز قابل استفاده است و ديگري هزينه رفت وبرگشتهاي اضافي در حالتيست كه نسخه موجود در Cache فاقد اعتبار لازم است. براي جلوگيري از پرداخت اين هزينه ها پروتكل HTTP1.1 از يك مكانيسم شرطي براي اين مورد سود جسته است. در حقيقت با استفاده از مكانيسم اعتبارسنجي مي توان پهناي باند مورد استفاده را كاهش داد.
ويژگي كليدي استفاده شده در اين پروتكل استفاده از مفهوم Cache Validator است. هنگاميكه Server اصلي يك پاسخ كامل در جواب يك درخواست توليد و ارسال مي كند، گونه هاي مختلفي از Validator ها نيز به همراه آن ارسال مي گردند كه به همراه شيء درخواستي در Cache ذخيره مي شوند. هرگاه Client (اعم از web browser يا proxy cache) درخواست شرطي براي منبعي داشته باشد كه مدخل ناظر در Cache نيز دارد، Validatorهايي به نيز به همراه اين درخواست ارسال مي كند. Server اصلي در ابتدا Validatorها ي ارسالي را با Validatorهاي منبع مورد درخواست مقايسه مي كند. اگر اين Validatorها با يكديگر منطبق باشند، در پاسخ تنها يك سرآيند (بدون هيچ بدنه اي) ارسال مي كند. اين سرآيند معمولا حاوي يك كد وضعيت (Status Code) ويژه است (معمولا كد 304, Not modified). اما اگر Validatorها بر يكديگر منطبق نباشند، Server در پاسخ به درخواست Client پاسخ كامل (حاوي سرآيند و بدنه) ارسال مي كند.
با اعمال اين مكانيسم از ارسال پاسخ كامل توسط Server اصلي در حالتي كه نسخه موجود در Cache هنوز معتبر است (Validatorها با يكديگر برابرند) ، و نيز از رفت و برگشتهاي اضافي در حالتيكه Validatorها بر يكديگر منطبق نيستند جلوگيري شده است.
تنها تفاوت ميان پروتكل اخير در قسمت سرآيند درخواستها است. در پروتكل HTTP1.1 در قسمت Header درخواستها برخي پارامترهاي اضافي نيز تدارك ديده شده است (كه همان Validatorها هستند). نكته ديگري كه بايد به آن توجه داشت اين است كه الزامي در استفاده از Validatorها توسط Server وجود ندارد. در اين حالت اشياء ارسال در Cache ذخيره مي شوند و تا زماني كه تاريخ انقضاء آنها فرا نرسيده است در Cache معتبر هستند. مگر اينكه توسط دايركتيوها نظير Cache-control از cacheشدن آنها جلوگيري شود.
انواع Validator ها :
1- Last-Modified Date (تاريخ آخرين اصلاح):
معمولا به عنوان Cache-Validator استفاده مي شود. يك مدخل موجود در Cache معتبر است اگر از تاريخ آخرين اصلاح آن تاكنون اصلاحي بر روي آن در Server صورت نگرفته باشد.
2-Entity Tag:
ETagها براي مواردي به كار مي روند كه استفاده از Validatorهاي زماني ممكن نباشد. اصولا در سيستم هاي توزيع شده بهره گيري از مفهوم زمان مي تواند به صورت بالقوه تناقض و ناهمگوني را در سيستم ها در پي داشته باشد. لذا استفاده از اين نوع Validatorها، قابليت اعتماد و اطمينان بالاتري را نسبت به Validatorهاي زماني در پي خواهد داشت.
3- Validatorهاي قوي و ضعيف:
ديديم كه در شيوه اعتبارسنجي Validating ((Cache Server اصلي و اطلاعات مربوط به Validatorهاي خود را با يكديگر مقايسه مي كنند تا مشخص كنند كه آيا هردوي آنها يك چيز واحد را مشخص مي كنند يا اشياء و منابع اطلاعاتي متفاوتي را نشان مي دهند. به صورت عادي انتظار مي رود كه هرگونه تغيير در شيء متناظر با Validator موجب تغيير در Validatorناظر به آن گردد. در صورت برقراري چنين حالتي Validator را قوي (Strong Validator) مي نامند
اما ممكن است حالتي وجود داشته باشد كه Server اصلي تمايل دارد تغييرات معنايي در Validator ايجاد كند و يا تغييرات ناچيزي در شيء متناظر با Validator ايجاد كند اما اين تغييرات در Validator نمودي نداشته باشد. اين نوع Validator را ضعيف (weak) مي نامند.
Cache ها چگونه کار می کنند؟
ü اگر سرآيندهايي که به همراه شيء درخواستي ارسال شده اند خواهان اين باشند که شيء موردنظر در Cache server ذخيره نشودcache server آن شيء را ذخيره نمي کنند. اکثر cache serverها اشياء فاقد validator را به عنوان شيء غير قابل ذخيره در Cache server مي شناشند و از ذخيره شدن آن اشياء در Cache ها ممانعت مي کنند.
ü اگر اشياء مورد درخواست امنيتی (secure) و يا نيازمند به اخذ مجوز (Authenticated ) باشند در Cache ذخيره نمي شوند .
ü يک شيء موجود در Cache "تازه" محسوب مي شود (يعني چنانچه درخواستي براي آن شيء موجود باشد و شيء مورد نظر در Cache موجود باشد بدون تطبيق آن شيء با شيء اصلي موجود در Server آن شيء در پاسخ به درخواست موردنظر ارسال مي شود) اگر:
ü شيء موجود در Cache زمان انقضاء( expiry time) داشته باشد و هنوز موعد آن فرا نرسيده باشد (شيء مورد درخواست فاسد نشده باشد)
ü شيء موجود در Cache داراي کنترلهاي سني (age-controlling directives ) باشد و اين کنترلها هنوز معتبر باشند
ü اگر شيء مورد درخواست در Cache فاقد اعتبار باشد (Stale شده باشد) در اين صورت عمليات معتبرسازي براي شيء درخواست شده انجام مي گيرد. به اين صورت كه پارامترهاي اعتباري شيء مورد درخواست با مجموعه پارامترهاي اعتباري شيء اصلي موجود در Server مطابقت داده شده و بر اساس نتيجه اين عمليات نسخه موجود در Cache معتبر تشخيص داده مي شود و يا اينكه درصورت نامعتبر بودن نسخه اي معتبر از آن براي درخواست كننده ارسال مي گردد.
نحوه پیکربندی caching
ما می توانیم caching را براساس محل قرار گیری به 5 دسته تقسیم کنیم.
1-client caching:
در client caching مرورگر کاربر به وسیله ذخیره سازی داده های cache شده بر روی دیسک محلی به صورت فایل موقت یا مرورگر حافظه داخلی عمل caching را انجام می دهد.این روش دستیابی سریع به برخی اطلاعات توسط کاربر را فراهم می کند و همچنین بار شبکه و بار سرویس دهنده را کم میکند.
مزایا:
1. داده هایی که بر روی کاربر محلی cache می شوند به آسانی می توانند مورد دستیابی قرار گیرند.
2. ترافیک شبکه را کاهش می دهد.
معایب:
داده cache شده کاملا وابسته به مرورگر است بنابراین قابلیت به اشتراک گذاری ندارد.
2-:proxy caching
در این روش از یک سرور اختصاصی استفاده می شود که این سرور اطلاعات cache شده بین کاربر و web server را در یک مکان اشتراکی ذخیره می کند که همه کاربران می توانند به طور یکسان از داده به اشتراک گذاشته شده استفاده کنند.cache server همه درخواست ها برای یک صفحه وب درخواستی را بدون اینکه درخواستی را به وب سرور اصلی سایت بر روی اینترنت پاسخ می دهد.در نتیجه دسترسی سریعتر است. اين مورد بيشتر براي شبكه هاي اينترانت بزرگ مي باشدكه بوسيله Firewall سرورهاي خود را از حمله درون اينترانت محافظت مي نمايند.
مزایا:
داده هایی که بر روی proxy cache ذخیره می شوند به راحتی می توانند مورد دستیابی قرار گیرند.
1. تعداد درخواست ها از web server کاهش پیدا می کند.
معایب:
1. ترافیک شبکه افزایش پیدا می کند.
2. تمامي كاربران شبكه مي بايست مرورگرهاي دستگاههاي خود را براي استفاده از اين سرويس پيكربندي نمايند.
3- REVERSE PROXY CACHING
بعضی proxy cache server ها می توانند به منظور کاهش درخواست هایی که web server آنها دریافت می کند در جلوی web server قرار گیرند.بدین ترتیب proxy server به در خواست هایی که بارها تکرار می شوند پاسخ می دهد بقیه در خواست ها که تکراری نیستند را به web server می فرستد. از توپولوژی caching در شبکه تجارت الکترونیک یا در مکانهایی که نیاز به مدیریت پویای منابع است استفاده می شود.
مزایا:
1. داده هایی که بر روی proxy cache ذخیره می شوند به راحتی می توانند مورد دستیابی قرار گیرند.
2. تعداد درخواست ها از web server کاهش پیدا می کند.
معایب:
ترافیک شبکه را افزایش می دهد.
4- WEB SERVER CACHING
در web server caching داده Cache شده درون web server ذخیره می شود .
امتیازات:
اصلاح کارایی سایت ها به وسیله کاهش زمان رفت و برگشت داده هایی که از پایگاه داده یا برخی از دیگر سرورها بازیابی می شوند.
معایب:
افزودن ترافیک شبکه
5- Transparent caching
اين حالت به اين دليل اسم گذاري شده است كه از نظر كاربر Cache بصورت شفاف وجود ندارد.اين توپولوژي بيشتر مورد استفاده در سرويس دهندگان اينترنت مي باشد زيرا نيازي به پيكربندي مرورگرهاي كاربرانشان ندارند.
مزایا:
1. نيازي به پيكربندي مرورگرهاي كاربر نمی باشد.
معایب:
1. در اين حالت Cache مي بايست در نقطه نهايي و حساس شبكه قرار گيرد و تمامي ترافيك شبكه از آن عبور كند.
2. از FTP پشتیبانی نمی کند.
3. فقط روی پورت 80 کار می کند.
چه اطلاعاتی قابل ذخیره سازی (caching) هستند؟
به طور کلی همه اطلاعاتی که زیاد تغییر نمی کنند مثل عکسها ٬ LOGO ها٬ .... مثلا اخبار تغییرات سهام در بورس به هیچ وجه ذخیره نمی شود چون دائما در حال تغییر است. ذخیره سازی یا عدم ذخیره سازی محتوا توسط صاحب محتوا (مدیر وب سایت یا طراح وب) به وسیله HTTP HEADER ها یا ابزارهای دیگر تعیین می شود.همچنین به وسیله ابزارهای موجود در CACHE SERVER ها توسط ISP ها نیز قابل تنظیم است.
تهیه کننده:جواد فرقانی تهرانی
refrence:
Ari Luotonen, Web Proxy Servers (Prentice Hall, 1997) ISBN 0-13-680612-0
Duane Wessels, Web Caching (O'Reilly and Associates, 2001).
Michael Rabinovich and Oliver Spatschak, Web Caching and Replication (Addison Wesley, 2001