|
اطلاعیه های سایت
موضوعات
خوراک های نیوک لرن
برچسب های برتر
|
راه های بهینه سازی سایت با ذحیره سازی بهینه منابع
درخواستی هایی هستند که مرورگر در حین مرور سایت مجبور به صدور آن ها می شود . در این مقاله می پردازیم به آموزش استفاده از فواید سیستم ذخیره سازی مرورگر ( browser cache ) برای کاهش شمار درخواست HTTP که منجر به کاهش مصرف پهنای باند سایت نیز خواهد شد . صادقانه بگویم بهینه سازی صفحات وب برای بسیاری , موضوعی خشک و نچندان جذاب است . اما پیشنهاد من این است که تا پایان این مطلب همراه ما باشید تا با هم به بررسی و شناخت کامل از ذخیره سازی سمت کاربر بپردازیم و راه های مفید برای بهینه سازی وب سایت را معرفی کنیم .
کش مرورگر چیست ؟مرورگرها عناصر صفحات وب را ذحیره می کنند . برای مثال تصاویر , اسناد html و استایل های قالب از عناصری هستند که مرورگر در فضای دائمی ( رایانه کاربر) ذحیره می نماید . روش عملکرد کش مرورگر بسیار ساده است . هنگامی که کاربر صفحه ای را در محیط اینترنت می خواند مرورگر بر دو فرضیه عمل خواهد کرد . اول بررسی می کند که آیا از قبل نسخه ای ذخیره شده از آن صفحه دارد و یا خیر که در صورت وجود نسخه پیشین از آن صفحه دیگر نیاز به بارگذاری مجدد نخواهد بود . چیزی که محور بحث ما در این موضوع است پروتکل های HTTP/1.1 protocol که استفاده عامل آن در وب سایت ها است و کاربر را مجاز به تعیین محتوای فابل ذحیره و یا مدت زمان بارگذاری مجدد صفحه می سازد . این پروتکل مبتنی بر دستورات معروف به response headers می باشد این دستورات در سورس یک سایت درج می شوند و اطلاعات لازم برای مرورگرها می باشند . دستورات مربوط به ذخیره سازی صفحات که مرورگرها را کنترل می کنند یکی از دو مورد زیر است :
تنها یکی از موارد بالا نیاز است و در صورتی که کاربر از هر دو آن ها استفاده کند Cache-Control مقدم خواهد بود
اگر از دستور Cache-Control استفاده شود , ذحیره سازی محتوا در طول زمان ( ثانیه ) تعیین شده به حالت ذحیره سازی از ابتدا خواهد بود و سایت شما را تا آن مدت سایتی جدید به شمار خواهد آورد . که این عمل منجر به داشتن نسخه ای جدید از سایت در آن زمان می شود .
و اگر از دستور Expires استفاده شود به معنای ذحیره سازی جدید تا زمان انقضای صفحه خواهد بود . زمان در این دستور بر حسب استاندار تاریخ نویسی : Thu, 01 Jan 2008 13:37:41 GMT می باشد اگر فصد دارید از دستور cache-control استفاده کنید بهتر است به شما پیشنهاد کنم کمی مقدار را بیشتر بگیرید تا از اشتباه تداخل زمانی جلوگیری شود . گرچه دستور Expires امن تر و استفاده از آن موردی صحیح تر است . چه اتفاقی در صورت انقضای زمان کش رخ می دهد ؟چگونگی عملیات ذحیره سازی مرورگرها پس از تاریخ انقضای معین شده بسیار ساده است . مرورگر حتی پس از زمان انقضا با ارسال دستوری به شکل If-Modified-Since به بررسی وجود نسخه ذخیره شده می پردازد و در صورتی که نسخه ذخیره شده با نسخه سایت یکسان باشد مرورگر از بازگذاری ( renew ) محتوا خودداری خواهد کرد . مثالی از مراحل انجام کار مرورگرها می تواند به شکل زیر باشد : 1- مرورگر صفحه ای را مرور می کند و درخواست HTTP از خود صادر می کند . 2- سرور در پاسخ دستور cache-control و last-Modified را صادر خواهد کرد . 3- مرورگر محتوا را در فضای دائمی ذحیره خواهد کرد. 4- پس از گذشت زمان معین شده , مرورگر همان صفحه را مرور می کند و متوجه گذشت زمان معین می شود . 5- مرورگر دستوری را شرطی صادر می کند به شکل If-Modified-Since تا اعتبار ذحیره سازی را بررسی کند و زمان آخرین ویرایش را بیابد 6- در صورتی که مرورگر متوجه شود که محتوا همان است با کد وضعیت 304 پاسخ خود را صادر خواهد کرد که مشخص کنند عدم تغییر محتوا از تاریخ مشخص شده می باشد . آنگاه مرورگر مجاز به استفاده محدد از همان نسخه ذخیره شده خواهد بود
البته موضوع به همین سادگی ختم نمی شود و در بین ارسال دستورات مقادیر بالاسری ( حاشیه ای ) نیز به وجود خواهد آمد
چه زمانی مرورگر درخواست های شرطی را صادر می کند ؟این سوال را بسیار کوتاه پاسخ می دهم . مرورگر می بایست از قبل نسخه ای ذحیره شده در خود داشته باشد .
بهره وری بیشتر در استفاده از دستوراتفرض بگیرید که برحسب HTML نویسی بخواهیم استایل مورد نظر خود را مثلا با نام special.css از حالت کش خارج کنیم :
<head> Later, when the design changes, the corresponding HTML markup could be: <head> خوب این ترفند موجب می شود که مرورگر کاربر فایل style ما را فایلی جدید به شما بیاورد و در برخورد با آن نسخه ای جدید به روز کند .
اما سوال اصلی این جا است که در مورد اسناد و محتوای سایت که دائما در حال تغییر هستند چه راه حلی وجود دارد . راه اصلی استفاده از دستور Cache-Control: max-age=0, must-revalidate و یا Last Modified در سورس سایت است .
گرچه می دانم این مبحث کمی فنی بود و خشک بودنش از لحاظ تئوری برای خیلی ها جذابیتی ندارد اما فراموش نمی کنیم که همین مطالب خشک و نظری گاهی بهترین بهره وری را دارند . در آخر اگر در مورد سایت خود و میزان بهره وری آن کنجکاو هستید به شما پیشنهاد می کنم که از پلاگین معروف YSlow فایرفاکس برای بررسی سایت خود استفاده کنید .
گاهی هم می شود از یک روش ساده تر استفاده کرد . مثلا با اضافه کردن عدد به آخر نام فایل css آن را از حالت کش خارج کرد :
<link rel="stylesheet" href="/css.1234/styles.css" type="text/css"
اما نکته اینجاست که باید از یک دستور mod_rewrite هم استفاده کرد که css.1234 را به css تبدیل کند در فایل htaccess از کد زیر استفاده کنید : RewriteEngine On RewriteRule css[.][0-9]+/(.*)$ css/$1 [L]
مبحث کش در نگاه کد :
در آخر برای نزدیک شدن به بحث عملی توصیه می کنم مطالب زیر را مطالعه کنید :
منابع : درجه 0/5 (0%) (0 رای)
مطالب بیشتر در مورد ترفندهای طراحی
· سایر مطالب نوشته شده توسط jaber پربازدیدترین مطلب در زمینه آموزش طراحی سایت و ابزار لازم:3
برای استفاده از سرویسهای مخصوص کاربران عضو فرم عضویت را تکمیل نمائید . |