سفارش تبلیغ
کیف موبایل Angry Birds
یک کیف موبایل شیک و جذاب با برند معروف و با کیفیت Golla، دارای جای هندزفری و کارت اعتباری
دستبند بلوتوث ویبره
وقتی گوشی شما زنگ بخورد شماره تماس طرف مقابل روی دستبند نمایش یافته و دستبند می لرزد.
اسپیکر فلش‌خور
اسپیکر شارژی کوچک دارای ورودی usb برای پخش فلش مموری و فایل های microSD
دستبند بلوتوث ویبره
آذر 90 - سئو بهینه سازی موتورهای جستجو :: تبادل لینک سه طرفه
 RSS  | Atom | نقشه سایت | سئو | درباره من | مجموع بازدیدها: 131615 | بازدیدهای امروز: 176| بازدیدهای دیروز: 725
 

برای جستجو در مطالب گذشته این وبلاگ از کادر زیر استفاده نمایید

برای بار گذاری کمی صبر کنید...
   1   2   3      >

حتما برای شما هم پیش آمده که در طراحی خودتان را درگیر محدودیت هایی کرده باشید
مثلا اینکه اگر کاربر جاوا اسکریپت نداشت چی؟
و به خاطر همین خودتان را از یکی سری امکانات خوبی که جاوا اسکریپت در اختیار تان می گذاره محروم کرده باشید
مثلا یکی از این امکانات فوق العاده جاوا اسکریپت که من در وبلاگ دیگرم به آن اشاره کرده ام قانونمندی هک css با جاوا اسکریپت می باشد
شما نمی توانید تصورش را بکنید که این پک جاوا اسکریپت چقدر به شما کمک می کند


در عین حال من شرکت بزرگی را می شناسم که به خاطر مسائلی که به آن اشاره شد خودش را از این ابزار محدود کرده است
حالا من از یک دید دیگه به این قضیه نگاه می کنم (مخصوصا که اینجا یک وبلاگ سئو است و نه وبلاگ طراحی سایت)
بعضی افکت ها و مخفی کاریهای جاوا اسکریپت مشکلاتی از نظر سئو ایجاد می کنه
یعنی باعث میشه گوگل فکر کنه که سایت می خواهد بعضی محتوا ها را از کاربران مخفی کنه
مثل منو های کشویی یا اسلاید شات های گالری و ...
 برای اینکه مشکلات از این دست پیش نیاید
کار جالبی که افراد خبره انجام می دهند(البته استفاده از این متد را من تو کشور خودمون ندیده ام) این است که برای وقتهایی که جاوا اسکریپت غیر فعال است صفحات را به یک صفحه از پیش تعریف شده ریدایرکت می کنند و در آن صفحه با ارسال هدر  101 به موتورهای جستجوگر اعلام می کنند که یک خطای کوچک (101 Switching Protocols) موجب عدم نمایش صفحه شده است


برای اینکار وقتی مرورگر کاربر فاقد جاوا اسکریپت باشد آن را به صفحه  ای که هدر 101 ارسال می کند می فرستیم
( اگر فکر می کنید که چون ربات گوگل یا googlebot  بدون جاوا اسکریپت است ممکن است با دیدن کد زیر از صفحه شما کوچ کند و آن را ایندکس نکند اشتباه می کنید)
برای فرستادن کاربر فاقد جاوا اسکریپت   به صفحه  ای که هدر 101 ارسال می کند از کد زیر در داخل صفحه مورد نظر استفاده کنید


<NOSCR!PT><META HTTP-EQUIV="REFRESH" CONTENT="0;URL=101.PHP"></NOSCR!PT>


کد خطای 101 ساده ترین کد خطای http  است که هیچ مشکلی برای شما ایجاد نمی کند
توضیحات کاملتر آن را می توانید در لینک 101 Switching Protocols بخوانید
 با این کار  گوگل  می فهمد که این سایت بدون جاوا اسکریپت خروجی ندارد ضمن این که کاربران هم متوجه می شوند که باید جاوا اسکریپت شان را روشن کنند
اما نکته ای در مورد ارسال هدر 101
ارسال هدر 101 در مود CGI سرور آپاچی بدون مشکل انجام می شود یعنی به صورت


<?php
header
("HTTP/1.1 101 Switching Protocols");


 اما در تنظیمات سرور با مود آپاچی یا FastCGI  شما نمی توانید این هدر را بصورت زیر بفرستید


<?php
header
("HTTP/1.1 101 Switching Protocols");


چرا که در آنصورت صفحه دانلود می شود (البته بعد از کامپایل شدن)
و تنها می توانید بصورت زیر  این هدر را ارسال کنید


<?php
header
("Status: 101 Switching Protocols");


البته خیلی هم موفق نیست (چون یک جورهایی آچاچی در تغییر وضعیت با هدر Status هماهنگ عمل نمی کند)
نمونه انجام شده این کار را می توانید در گوگل آنالیزر::تنها سرویس نمایش همزمان کلمات جستجو شده کاربران ملاحظه فرمایید
کافیست تا جاوا اسکریپت خود را غیر فعال کنید و به این لینک بروید....




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:سه شنبه 29 آذر 90 ساعت 2:48 عصر

پاسخ به سوال مطرح شده از سوی کاربران


سوال
یه سوال داشتم
من کلمه ی سئو رو توی گوگل سرچ کردم
که وبلاگ شما توی صفحه ی دوم بود
لینک زیر نتیجه جستجوی کلمه ی سئو است که به وبلاگ شما منتهی میشه
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=18&ved=0CHEQFjAHOAo&url=http%3A%2F%2Fseo.parsiblog.com%2F&ei=TYHvTtqJFpKJhQenkMHRCA&usg=AFQjCNE0IAFHyFTEOMiSPEsNpxMCUYI4pw&sig2=RR10Prfjyx141YFhyuxF0A
می خواستم بدونم اگر من این لینک رو یه 1000 نفر که آی پی مختلفی دارن بدم که روش کلیک کنن و به سایت شما بیان
آیا تاثیری رو بالا بردن رتبه وبلاگ شما روی کلمه ی سئو داره یا نه
 یعنی یاعث میشه که به خاطر این هزار نفری که روی این لینک کلیک کردن و به سایت شما اومدن رتبه ی وبلاگ شما بالاتر بره و بیاد مثلا صفحه اول ؟

جواب:مشخصا نه
گوگل خیلی پیشتر از  این برای مقابله با چنین ترفندهایی  پیش بینی های لازم را کرده است
اگر به لینک بالا دقت کنید می بینید که گوگل به لینک خود اضافاتی افزوده است که مهمترین هدف از این کار کد گذاری کردن لینک نتایج حاصل از جستجو است
در این کد بندی عواملی مثل زمان جستجو،Ip،agent مرورگر، وضعیت کاربری در یکی از اکانتهای گوگل و همچنین برخی اطلاعات بدست آمده از کوکی وجود دارد که تمام این موارد در سرویس محبوبیت کلمه از  سرویس های رایگان گوگل724  لحاظ شده بود
(این سرویس فعلا غیر فعال شده است)
تمام این عوامل دست در دست هم مانع از شبیه سازی این کد لینک می شود
اما اگر کار دیگری می توانید کنید
یعنی بیایید به این 1000 نفر بگویید با کلمه سئو در گوگل جستجو  را انجام دهند و وبلاگ را پیدا کنند و کلیک کنند بله تاثیر فوق العاده ای دارد البته به شرطی که این 1000 نفر همزمان این کار را نکنند و در یک بازه یک هفته یا بیشتر این کار را انجام دهند و در این کار هم زیاده روی نکنند (یعنی اینطور نباشد که روزی چند بار این کار را بکنند)
و بالاخره این را باید بگویم که با اجرای الگوریتم پاندا که قبلا در همین وبلاگ مطالبی در موردش گفته شد گوگل پارمترهای قوی تری را در پیش گرفته است مثل ماندگاری کاربر در سایت و....
اینکه بدانید در چند تا  از جستجو کاربران با کلمه مورد نظر شما در نتایج جستجو ظاهر شده اید و در این جستجو شما در چه جایگاهی قرار داشته اید  و چند بار در این جستجو هایی که سایت شما نمایش داده شده است مطلب بعدی ما را  که در پایان امروز تحت عنوان Search querie گوگل و جایگاه شما درج خواهد شد  را مورد مطالعه قرار دهید



نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:سه شنبه 29 آذر 90 ساعت 9:35 صبح

 روی قضیه نحوه افزایش سرعت یک سایت کلا دو راهکار داریم
1- کاهش درخواست از سرور
2- کاهش حجم انتقال
عمده حرف من از کاهش درخواست از سرور با مدیریت بهتر کش و css sprit  است

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

1- یک سری تغییرات کلی در نحوه چیدمان عکس ها و  نحوه استفاده از css که بحث پیرامون آن خارج از این مقوله است

2-غیرفعال کردن ETAG و  اولویت دادن به کش استاتیک

وقتی Etag فعال باشد مرورگر مدیریت کش را به سرور واگذار می کند یعنی مرورگر درخواست فایل را می دهد اگر سروردر  پاسخ هدر 304 را داد به این معنی است که کش را مورد استفاده قرار بده (محتوا فرستاه نمی شود) در غیر اینصورت محتوا ارسال می شود
ایراد etag در این است که در هر صورت ارسال درخواست را داریم (حتی اگر کش انجام شده باشد) اما در کش استاتیک مدیریت کش با مرورگر است

3- vary
vary که من آنرا واکنش معنی کرده ام  برای مدیریت واکنش ISP ها در کش محتوا می باشد
و یکی از مواردی که این هدر ایجاد می شود در مود ریرایت است
همه مشکل از آنجا شروع می شود که سرورPHP  در حالت gzip و غیر آن vary متفاوت ایجاد می کند. یعنی
در حالت فشرده vary در اکثر سرور ها بصورت     * "user-agent"


و در حالت غیر فشرده بصورت   * "accept-encoding, user-agent"


و این یکی از مهمترین مواردی است که چون مرورگر دچار سردرگمی می شود کش را ضایع می کند

راهکار پیشنهادی:
  استفاده ار force-no-vary  برای غیر فعال کردن کش آی اس پی ها و یا  استفاده از vary یکسان در هر دوحالت

4- HTTP/1.1 و  force-response-1.0
برای حفظ سازگاری در همه مرورگر ها پاسخ های هدر سرور همواره با HTTP/0 داده شود
که هیچ تاثیری در سرعت و قابلیت ها ندارد اما  موجب می شود که در مواردی که مرورگری پروتکل HTTP 1 را پشتیبانی نمیکند مانعی برای کش شدن پیش نیاید

5- برای کش همیشه نوع درخواست باید HTTP GET باشد (و بدون پارمترهای GET  تا کش انجام شود ) به عبارتی در متد POST هیچ کشی انجام نخواهد شد و این از مواردی است که در آجاکسی باید درنظر گرفته شود
6- یکی از شرطهای جالب Cache-Control کهIE بیشتر آن را مورد توجه قرار داده
 post-check و  pre-check است  مثلا
Control: post-check=10; pre-check=120
که به مروگر می گوید تا 10 ثانیه که اصلا نیازی به چک کردن ندارد و به کش اعتماد کن و بعد از 120 ثانیه هم قبل از استفاده از  کش از سرور استعلام بگیر(شباهت بسیاری به max-age دارد)




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:یکشنبه 27 آذر 90 ساعت 11:56 صبح

دست آورد دیگری از  گروه گوگل 724 


برای اولین بار در وب   گروه G724  اقدام به ارایه سرویس «تعین میزان فشرده سازی محتوای صفحه» نمود

از این پس شما می توانید میزان فشرده سازی صفحات سایت خود را بدون نیاز به هیچ نرم افزار دیگری  بررسی کنید

کاری که در هیچ کجا سابقه ندارد

محاسبه میزان فضای فشرده شده از صفحه از این نظر مهم است که می توانید پی ببرید که آیا هاست شما این قابلیت را فعال کرده است یا خیر (قابلیت GZIP یا فشرده سازی محتوای صفحات)

وقتی محتوای صفحه فشرده شده باشد گاها  تا 85 درصد از حجم آن کم می شود خوب فرض کنید اگر محتوای شما 100 کیلو حجم داشته باشد به 15 کیلو کاهش پیدا  می کند

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

من شخصا جای دیگری که این امکان را در اختیار کاربران داده باشند ندیده ام  

علی الخصوص  که وضعیت فشرده سازی را در سطوح مختلف نشان می دهد 

متاسفانه به دلیل محدودیتهای موجود و جلوگیری از اضافه بار روی سرور این امکان  فقط برای مشتریان گروه گوگل 724  بدون محدودیت در صفحات است و

برای سایر افراد تنها صفحه اصلی سنجیده می شود و البته چون مقادیر کسانی که مشتری نیستند کش می شود عملا یکبار بیشتر محاسبه فشرده سازی انجام نمی شود

اما همان یکبارش هم کافیست تا متوجه شوید  که آیا هاست و در کنار آن نرم افزار مورد استفاده تان  محتوا را فشرده می کند یا خیر

در صورتیکه تمایل به استفاده از سرویس  تعین میزان فشرده سازی محتوای صفحه دارید  بر روی عکس زیر کلیک نمایید

 


سرویس نمایش فشرده سازی محتوای سایتها




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:چهارشنبه 23 آذر 90 ساعت 5:56 عصر

بررسی روشهای متنوع فشرده سازی  خودکار مطالب در php 


منظور از فشرده سازی خودکار  فشرده سازی توسط سیستم عامل سرور می باشد یعنی بدون اینکه شما نیازی به فشرده کردن  محتوا در  کدهای خودتان با توابع PHP داشته باشید مدیریت آن را به آپاچی بسپارید


آپاچی را طبق متد دیفلت یا RFC 1951 - DEFLATE Compressed Data Format Specification version  پیکربندی کنید


حال به دو روش می توانید فشرده سازی با آپاچی را از طریق HTACCESS مدیریت نمایید

در سرور  فشرده سازی بر روی بافر انجام می  شود  اما می توان آن را طوری پیکر بندی کرد که ابتدا بافر ایجاد شود و بعد هدر ها ارسال شود (در این صورت می توان هدر یا ست کردن کوکی را در بین متن یا BODY هم انجام داد بدون اینکه خطایی دیده شود) و یا اینکه به ترتیب کد بافر ایجاد شود (در صورت استفاده از هدر بعد از  BODY  خطا دیده می شود )

که هر کدام مزایا و معایب خود را دارد که در اینجا مجال پرداختن به آن نیست

روش اول ـ  ابتدا بافر ایجاد شود و بعد هدر ها ارسال شود

برای این کار باید کد زیر را در htaccess نوشت 

php_flag output_handler ob_gzhandler

توجه شود که این کد تنها در مود آپاچی اجرا می شود و نه مود CGi ضمنا این کد خودبخود کد php_flag output_buffering Off را هم به همراه دارد

روش دوم -  به ترتیب کد بافر ایجاد شود 

برای این کار باید کد زیر را در htaccess نوشت 

AddOutputFilterByType DEFLATE

دقت نمایید که من خیلی کلی نوشتم و در عمل باید ظرافتها را اعمال کنید مثلا بهتر است کد آخر بصورت زیر نوشته شود


<ifmodule mod_deflate.c>

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-java application/java

</ifmodule>




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:چهارشنبه 23 آذر 90 ساعت 11:24 صبح

تعجب نکنید مبحثی که می خواهم باز کنم چیز پیچیده و غامض نیست بلکه  بیشتر می خواهم یکی از نکاتی را باز کنم که به درست کار نکردن کش تنظیم شده شما مربوط میشود


برای شما از VARY در شرایط کش شدن یک صفحه سایت گفتم و توضیح مختصری از آن دادم


در اینجا vary را  بیشتر می خواهم  بازکنم تا مطلب بیشتر برایتان جا بیفتد


vary به طور خلاصه به واکنش ها در برابر محتوا اشاره دارد


وقتی تمام آن را خواندید متوجه می شوید که Vary  از مواردی است که به سرور شما مربوط می شود تا فایلهای سایت تان پس اگر سرور اختصاصی ندارید یا دسترسی به تنظیمات سرور ندارید نیازی به خواندن آن پیدا نمی کنید


یکی از ارزنده ترین کاربردهای vary در پروکسی هایی است که همه چیز را کش می کنند(یک مثال از پروکسی گفته شده ISP ها هستند)


فرض کنید شما مطلبی را می خوانید که سرور آن را به دو صورت  gzip شده و فشرده نشده بسته به پشتیبانی مرورگر می فرستد


حال فرض کنید مرورگر شما gzip را پشتیبانی می کند (در 90 درصد مواقع چنین است) پس سرور مطلب را بصورت gzip یا فشرده می فرستد


ISP هم در بین راه مطلب را ابتدا کش می کند وبعد برای شما می فرستد


حال کاربر دیگری با ارایه آدرس اینترنتی یکسان  همان  مطلب را از سرور در خواست می کند با این تفاوت که مرورگرش gzip را پشتیبانی نمی کند


حال ISP بین راه وقتی درخواست را می بیند و می بیند که آن را بر اساس آإرس اعلام شده در کش خودش  دارد کش را برای این کاربر بی خبر از همه جا می فرستد


و چون مرورگر او gzip را پشتیبانی نمی کند تنها یک سری حروف عجق وجق می بیند


در نتیجه فکر می کند از منبع ایراد وجود دارد


برای اجتناب از خطاهای از این دست VARY تعریف شد


در حالت فشرده vary در اکثر سرور ها بصورت     * "user-agent"


و در حالت غیر فشرده بصورت   * "accept-encoding, user-agent"


در می اید


تا اینجای کار همه چیز درست است و دیگر ISP ها دچار آن اشتباه مهلک نمی شوند


ولی مشکل اینجاست که اینبار مرورگر دچار مشکل شده و نمی تواند تفاوتی بین حالت فشرده شده و غیر آن قائل شود در نتیجه کش را مورد استفاده قرار نمی دهد


چرا که در حالت فشرده و غیر آن دو نوع VARY دریافت کرده


برای رفع این مشکل توصیه می شود که در هر دوحالت از vary  حالت فشرده یعنی


* "user-agent"


استفاده شود


 




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:یکشنبه 20 آذر 90 ساعت 7:0 صبح

پاسخ به چند سوال مطرح شده از سوی کاربران


حتما برای شما هم این سوال  پیش آمده که چرا کسانی که مطالب ما را کپی می کنند بالاتر قرار می گیرند


من در پست الگوریتم پاندا گوگل پاسخ ان را داده ام


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



سوال سلام و عرض ادب خدمت شما آقای شیبانی چندی پیش سایت منو از بلاک در آورده بودید که لازمه تو هر ایمیلم ازتون سپاسگذاری کنم .
میخواستم یک موضوع رو باهاتون در میون بذارم.
الان سایت من بخوبی مطالبش ایندکس میشه و دامین تولز سئوی سایتمو 100% نشون میده همچنین بخوبی سایتو آپدیت میکنم اما میخوام دلیل اینو بدونم که چرا مطالبم توی گوگل خیلی پایینتر از مطالب سایت رقبا میاد چطور میتونم این مشکلو حل کنم آیا تغییر قالب تاثیر آنچنانی دارد ؟
ضمنا من موقع بلاک شدن لینکستان سایت رو برداشتم و دیگر هیچ لینکی به سایت دوستانم ندادم خب  دوستان هم لینک منو از سایت هاشون برداشتن آیا ممکنه مشکل فوق بخاطر همین عمل من باشه ؟ 
با تشکر

جواب:سلام
از لطف حضرت عالی کمال تشکر را دارم
من نمی دونم که شما تولید محتوا می کنید و یا کپی
و این خیلی مهم است
اگر کپی از سایت دیگری دارید حتما یک لینک به آن سایت بدهید
لینکی که هیچ شرط و شروطی نداشته باشد مثل (rel=nofollow) و این به گوگل می فهماند که شما حقوق ناشرین را رعایت کرده اید ضمن اینکه اگر کسی از شما به گوگل شاکی شد کاری پیش نمی برد و دردسری برایتان ندارد
اما اگر مطالبتان از خودتان است به هرکس که از شما کپی کرده بدون اینکه به شما لینک سالم داده باشد دوستانه هشدار بدهید که لینک به شما را فراموش کرده
و همینکه او به شما لینک بدهد کافیست (هرچند در این مورد احتمالا گوگل جایگاه شما را برنگرداند چرا که  همینکه چند روز بالاتر از شما بوده باعث شده محبوبیت کسب کند  اما در موارد بعدی باعث می شود که جایگاه خودتان را داشته باشید)
ولی اگر راضی به اینکار نشد با اینکه گفتنش برایم جالب نیست اما چاره ای جز شکایت از او به گوگل ندارید
البته بهتر است سعی کنید او را قانع کنید چرا که با اقدامات گوگل ممکن است  لطمات مادی زیادی از قطع ورودی های گوگل  به متخلف برسد تا ان حد که تصورش را نکند برای اینکار من توضیحاتی در
لینک شکایت کپی مطالب گوگل دادم
شاید به ظاهر وقت گیر باشد ولی با چند روز استمرار بر این کار متخلف خودش می فهمد که ادامه این کار او را همیشه از صحنه جستجوی گوگل خارج می کند



نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:شنبه 19 آذر 90 ساعت 3:28 عصر

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


اما گاه پیش میاید که می خواهیم مقادیر کش شود چرا که نه محرمانه است و نه شخصی


در نظر بگیرید پیش بینی آب و هوا را


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


همانطور که قبلا گفته شد پروتکل HTTP  طوری نوشته شده که تنها مرورگرها اجازه کش کردن متد GET را دارند


در مواردی که فرم ما با متد post نوشته شده  به روش جاوا اسکریپتی می توان بصورت GET با آن برخورد کرد تا مقادیر را به درستی کش کند


کافیست با استفاده از  پلاگین جیکوئری jquery و ترفند های جاوا اسکریپتی (قرار دادن onsubmit و فرارخوانی کد زیر) فرم را بصورت Post ارسال کنیم


$.get(
    "form.php",
    {param1 : 1, paramX : "abc"},
    function(data) {
       alert("page content: " + data);
    }
);

کدخط بالا  از لینک مقابل برداشته شده است در صورتیکه نیاز به استفاده از این ترفند برای کش کردن فرم با متد POST در صفحات دارید حتما لینک مقابل را ببینید


HTTP GET request in Java




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:شنبه 19 آذر 90 ساعت 2:0 صبح

کلا ما دو روش منطقی برای افزایش سرعت یک صفحه اینترنتی داریم

1- کم کردن تعداد درخواستها از سرور (مثلا با کم کردن عکس ها و کدهای الحاقی جاوا اسکریپت و css ها و...)

2- کم کردن حجم داده هایی که باید از سرور به مرورگر منتقل شود (مثل فشردهسازی محتوا با gzip یا کامپرس کردن عکس ها)

با کش استاتیک یا cache static  ما به هر دو خواسته می رسیم و با کش شرطی  با ETAGS  خواسته دوم  حاصل میشود

اهدافی که ما از  کش کردن محتوا داریم عبارتند از


1- پایین  نگهداشتن لود سرور

2-لود شبکه

3- زمان تاخیر کاربر

به عنوان مثال مرورگر اینترنت اکسپلور برای تاعمل کش با سرور به صورت زیر ارسال هدر دارد

Pragma: no-cache

با این هدر مرورگر به سرور می فهماند که تمایلی به استفاده از کش موجود ندارد و ترجیح می دهد از نسخه سرور استفاده کند (این هدر با ctrl+F5 ایجاد می شود)

If-Modified-Since: datetime

مرورگر منتظر پاسخ سرور است که آیا از این تاریخ فایل تغییر داشته است یا خیر

If-None-Match: etagvalue

مرورگر به سرور اعلام می کند مشخصه فایل(ETAG) که من در اختیار دارم به صورت زیر است اگر نسخه جدیدتری داری اطلاع بده 

هر دو هدر If-Modified-Since یا  If-None-Match حالت کش شرطی را به وجود می آورند 

در حالت کش استاتیک ارسال هدر از هیچ نوع را نداریم 


در حالت شرطی سرور یا مجددا فایل را با کد 200 ارسال می کند و یا تنها هدر 304 را بصورت زیر می فرستد

HTTP/304 Not Modified

حال با این مقدمه برویم سر اصل مبحث یعنی

بررسی دقیق   Cache-Control در کش شرطی

در حالت شرطی ما هدری داریم به نام  Cache-Control

که انتخاب های (یکی یا برخی ) ‌زیر را برای آن داریم

no-store, no-cache, must-revalidate, pre-check, post-check

حالت no-store به معنی این است که مرورگر کش نمی کند

 no-cache به معنی این است که مرورگر کش می کند ولی تغییرات را با  هربار  رفرش جویاست 

must-revalidate به معنی لازم اجرا دانستن سوال از  سرور برای کش است

و اما دو حالت دیگر یعنی  pre-check, post-check ویژه اینترنت اکسپلور هست

post-check یعنی تا این زمان نیازی به استعلام برای تغییر کش نیست

pre-check یعنی تا قبل از این زمان حتما از تغییر نکردن کش مطمئن شو

مثلا اینطور می شود گفت که با کد زیر 

Control: post-check=10; pre-check=120

مکالمه مرورگر با سرور اینگونه است که 

تا ثانیه 10 ام که هیچ مکالمه ای انجام نمی شود و مانند کش استاتیک برخورد می شود

از ثانیه 10 تا 120 برای کش سوال میشود

بعد از ثانیه 120 کش منقضی است و مرورگر وجود آن را نادید می گیرد

با این توضیحات معلوم میشود که pre-check شباهت بسیاری به max-age دارد

با این تفاوت که ie تا زمانیکه به زمان post-check نرسیده باشد از هدر استفاده نمی کند (کش استاتیک)

این دو حتما باید با هم مقدار دهی شوند و در صورتیکه یکی از آنها مقدار دهی نشود خطا می باشد

مقدار داده شده عدد و به معنای ثانیه است مثلا عدد 60 یعنی یک دقیقه

اگر هر دو صفر باشند هیچکدام در نظر گرفته نمی شوند

post-check همیشه باید کوچکتر یا مساوی با  pre-check باشد در غیر اینصورت خطا است

اگر post-check صفر باشد و pre-check  عددی بزرگتر از صفر باشد تنها اتفاقی که می افتد محتوای صفحه دوبار دانلود می شود 

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

Control: post-check=0; pre-check=1

اما حالت منطقی این است که همیشه به post-check عددی بدهید که موجب دانلود بی دلیل صفحه در هربار نشود مثلا می توانید 10 بدهید



مطلب برداشت آزادی بود از مطلب:


 Internet Explorer"s Cache-Control Extensions




نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:جمعه 18 آذر 90 ساعت 10:0 عصر

گفتیم که کش کردن محتوا نقش زیادی در بالا بردن سرعت بارگذاری صفحه دارد اما مواردی هم هست که نباید محتوا را کش کرد


به عبارتی به برخی دلایل و صلاحدیدهای امنیتی نباید خیلی اصرا به کش محتوا داد و در مواردی با تمهیدات لازم را دید(علی الخصوص در مواردی که از CDN استفاده شده است)


به طور خلاصه هر محتوایی ک وابسته به تغییرات زمان است یا وابسته به شرایطی است که در هدرهای HTTP پیش بینی نشده است مانند آی پی درخواست کننده در این موارد نباید محتوا را کش کرد

که شامل

1-اگر محتوای مطالب شما هر 5 دقیقه به روز می شود کلا قید کش را بزنید

 2-  اگر طراحی سایت بگونه ای است که محتوا متناسب با آی پی  شخص درخواست کننده  تغییر می کند محتوا را نباید کش کرد

3- در صورتیکه شرایط خاص در هدر سایت پیش بینی شده است می توان صفحات وابسته به زبان یا agent یا کدینگ فونت را نیز کش کرد  که در اینصورت باید 

Vary: negotiate,accept-language,accept-charset

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

چرا که مرورگر ها قادرند بر حسب vary کش را مدیریت کنند

 نکته: Vary: negotiate به معنای وضعیت مذاکره است مثلا ارسال فرم  و امثالهم که مرورگر باید از کش صفحه بپرهیزد



نویسنده: سعید عرب شیبانی (گوگل724) | نوشته شده در:جمعه 18 آذر 90 ساعت 3:0 صبح

   1   2   3      >
لیست کل یادداشت های این وبلاگ


 این سایت به طور کامل توسط سعید عرب شیبانی اداره میشود لطفا در صورت بروز هر مشکلی اطلاع دهید