عضویت سریع

دریافت نیوک لرن

تبلیغات

خوراک های نیوک لرن

اخبار
دانلودي ها
آخرين نظرات
وبلاگ سایت

برچسب های برتر

محصولات

راه های بهینه سازی سایت با ذحیره سازی بهینه منابع

ترفندهای طراحی شنبه، 7 آذر، 1388 1194jaber


مولقه های زیادی در بهینه سازی زمان بارگذاری صفحات وب وجود دارند که یکی از طلایی ترین قوانین این مبحث استفاده حداقلی از درخواست های ایجاد شده از سوی مرورگر است . این درخواست ها که با نام  HTTP network requests شناخته می شود

درخواستی هایی هستند که مرورگر در حین مرور سایت  مجبور به صدور آن ها می شود .


در این مقاله می پردازیم به آموزش  استفاده از فواید  سیستم ذخیره سازی مرورگر (  browser cache ) برای کاهش شمار  درخواست HTTP که منجر به کاهش مصرف پهنای باند سایت نیز خواهد شد .  صادقانه بگویم  بهینه سازی صفحات وب  برای بسیاری  ,  موضوعی خشک و نچندان جذاب است  . اما  پیشنهاد من این است که  تا پایان این مطلب همراه ما باشید تا  با هم به بررسی و شناخت کامل از  ذخیره سازی سمت کاربر  بپردازیم  و راه های مفید برای بهینه سازی وب سایت  را معرفی کنیم .


 



 

We've all been there

کش مرورگر چیست ؟

مرورگرها  عناصر صفحات وب را  ذحیره می کنند . برای مثال تصاویر , اسناد html  و استایل های قالب  از عناصری هستند که  مرورگر در  فضای دائمی ( رایانه کاربر)  ذحیره می نماید .  روش عملکرد کش مرورگر بسیار ساده است . هنگامی که کاربر  صفحه ای را  در محیط اینترنت  می خواند  مرورگر  بر دو فرضیه  عمل خواهد کرد . اول بررسی می کند که آیا از قبل نسخه ای ذخیره شده از آن صفحه دارد و یا خیر   که در صورت وجود نسخه پیشین از آن صفحه دیگر نیاز به  بارگذاری مجدد نخواهد بود .

چیزی که محور بحث ما در این موضوع است  پروتکل های HTTP/1.1 protocol  که استفاده عامل آن در وب سایت ها است و کاربر را مجاز به تعیین  محتوای فابل ذحیره و یا  مدت زمان  بارگذاری مجدد صفحه  می سازد . این پروتکل مبتنی بر دستورات  معروف به response headers می باشد این دستورات در سورس یک سایت درج می شوند و  اطلاعات لازم برای مرورگرها می باشند .

دستورات مربوط به ذخیره سازی  صفحات  که مرورگرها را کنترل می کنند  یکی از دو  مورد زیر است :

 

Cache-Control: max-age=specify a duration in seconds

or

Expires: a GMT date in the format specified by RFC 1123

 

تنها یکی از موارد بالا نیاز است و در صورتی که کاربر  از هر دو آن ها استفاده کند  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  پاسخ خود را صادر خواهد کرد که مشخص کنند عدم تغییر محتوا از تاریخ مشخص شده می باشد .  آنگاه مرورگر مجاز به استفاده محدد از همان نسخه ذخیره شده خواهد بود

 

 

البته موضوع به همین سادگی ختم نمی شود  و در بین ارسال دستورات مقادیر  بالاسری ( حاشیه ای ) نیز به وجود خواهد آمد

A quick request's a good request

چه زمانی مرورگر  درخواست های شرطی را صادر می کند ؟

این سوال را بسیار کوتاه پاسخ می دهم . مرورگر می بایست از قبل نسخه ای ذحیره شده در خود داشته باشد .

 

بهره وری بیشتر در استفاده از دستورات

فرض بگیرید که برحسب HTML نویسی بخواهیم  استایل مورد نظر خود را مثلا با نام special.css از حالت کش خارج کنیم :

 

<head>
   <link href="special.css?v=1" rel="stylesheet" type="text/css" />
</head>

Later, when the design changes, the corresponding HTML markup could be:

<head>
   <link href="special.css?v=2" rel="stylesheet" type="text/css" />
</head>

خوب این ترفند موجب می شود که مرورگر کاربر  فایل style ما را فایلی جدید به شما بیاورد و در برخورد با آن نسخه ای جدید  به روز کند .

 

اما سوال اصلی این جا است که در مورد اسناد و محتوای  سایت که دائما در حال تغییر هستند چه راه حلی وجود دارد .

راه اصلی  استفاده از دستور   Cache-Control: max-age=0, must-revalidate   و یا Last Modified در سورس سایت است .

 

گرچه می دانم  این مبحث کمی فنی بود و خشک بودنش از لحاظ تئوری برای خیلی ها جذابیتی ندارد اما فراموش نمی کنیم که همین مطالب خشک و  نظری  گاهی بهترین بهره وری را دارند .

در آخر اگر در مورد سایت خود  و میزان بهره وری آن  کنجکاو هستید  به شما پیشنهاد می کنم که از پلاگین معروف YSlow فایرفاکس برای بررسی سایت خود  استفاده کنید .

 

Apple's YSlow results

 

گاهی هم می شود از یک روش ساده تر استفاده کرد .  مثلا با اضافه کردن عدد به آخر نام فایل 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]

 

مبحث  کش  در نگاه کد :

 


// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
 
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);

// HTTP/1.0
header("Pragma: no-cache

 

 

در آخر برای نزدیک شدن به  بحث عملی توصیه می کنم مطالب زیر را مطالعه کنید :

Apache's mod_expires

IIS content expiration

 

منابع :

1

2


کش cache ذخیره سازی بهینه سازی  
درجه 0/5 (0%) (0 رای)

ارسال به بلینک لیست ارسال به خوشمزه ارسال به ديگ ارسال به فرل ارسال به ردديت ارسال به تکنوراتي ارسال به یاهو مای وب ارسال به 100 درجه کلوب ارسال به بالاترین ارسال به دنباله ارسال به مهندس ارسال به استامبل ارسال به نتوز ارسال به فرندفید ارسال به تویتر ارسال به فیس بوک ارسال به سیمپی ارسال به Windows Live اشتراک گذاری در گوگل ارسال لینک از طریق یاهو مسنجر برای دوستان ارسال به سرویسهای دیگر


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



مدت زمان ایجاد صفحه : 0.49 ثانیه
تعداد ارتباط : 44
حافظه درگیر: 1.96 مگابایت

Copyright @2008-2011 Nukelearn CMS|   Email  | XML| license |[Valid Atom 1.0] [Valid RSS]


با کلیک روی 1+ از سایت ما حمایت کنید