اگر از همراهان همیشگی پرشین تولز هستید، حتماً مقاله قبلی در مورد رفع خطاهای سایت به کمک GTmetrix را خواندهاید! در این مقاله هم قصد داریم به بررسی ادامه این بحث بپردازیم تا بتوانید با افزایش سرعت سایت، وضعیت سئوی سایت خود را بهبود ببخشید و رضایت کاربران را هم جلب کنید.
رفع خطای Use GET for AJAX requests در جی تی متریکس
یکی دیگر از خطاهای رایج که در هنگام تست سرعت سایت با GTmetrix با آن مواجه میشویم، با عنوان Use GET for AJAX requests نمایش داده میشود که مربوط به استفاده از آجاکس در سایت است. قبل از این که فناوری استفاده از Ajax وارد حوزه وب شود، برای اینکه تغییراتی را در صفحه بعد از بارگذاری شدن اعمال کنند، مجبور بودند که با استفاده از زبانهای برنامه نویسی این درخواستها را استفاده کنند که در این حالت صفحه وب مجددا شروع به لود شدن میکرد و مجدداً درخواستها برای بارگذاری صفحه از سرور انجام میگرفت تا درخواست کوچکی که داخل صفحه وجود داشت، اجرا شود. این کار باعث بالا رفتن تعداد درخواست HTTP و مصرف بالای منابع هاست میشد! این مسئله باعث شد که فناوری آجاکس وارد حوزه برنامه نویسی شود!
رفع خطای Use GET for AJAX requests در GTmetrix
همانطور که میدانید با استفاده از قابلیت Ajax میتوانیم بدون این که نیاز داشته باشیم، صفحات سایت را از نو بارگذاری کنیم، محتوای دلخواه را در حالت پس زمینه به کاربران نمایش بدیم. یعنی اگر از آجاکس استفاده کنید، برای نشان دادن یک محتوای خاص نیازی به بارگذاری مجدد صفحه نیست و درخواستها به صورت پس زمینه از سمت سرور دریافت میشوند. در این حالت روند پاسخدهی از سرور به صورت بهینهتری است و اگه به درستی از آجاکس استفاده کنید، صفحات با سرعت خیلی بهتری لود خواهند شد.
درخواستهای آجاکس در دو حالت GET و POST هستند که استفاده از هر دو این درخواستها مزایا و معایب خاص خودش را دارد. تفاوت اصلی که باعث بهبود سرعت سایت در استفاده از متدهای POST و GET در آجاکس میشود، در نحوه ارسال است. در صورتی که درخواست به صورت POST باشد، ابتدا به صورت یک HTTP request در Header ارسال میشود و سپس سرور به این درخواست پاسخ میدهد. در حالتی که در روش GET هر دو این مرحله با هم انجام خواهند شد.
هنگامی که خطای Use GET for AJAX requests در تست سرعت سایت پیش میآید، در واقع از شما خواسته میشود که به جای استفاده از متد POST برای درخواستهای آجاکس از متد GET استفاده کنید. این کار باعث میشود که سایت شما بخاطر این که درخواستها را به صورت هم زمان در یک مرحله پردازش میکند، سرعت بهتری داشته باشد.
تفاوت متد POST و GET در آجاکس چیست؟
درگذشته برای تبادل اطلاعات بین سرور و مرورگر در یک بخش کوچک از صفحه باید از زبانهای asp یا php یا دیگر زبانها استفاده میکردند که در این روشها باعث میشود کل آن صفحه به سرور ارسال شود؛ به عبارتی کل صفحه لود میشد تا در نهایت فقط بخشی از صفحه تغییرات لازم بر روی آن اعمال شود. ارسال حجم کل اطلاعات صفحه تنها به خاطر تغییر قسمتی کوچک از آن باعث کاهش سرعت سایت و افزایش پهنای باند مصرفی میگردید همچنین این موضوع تجربه کاربری را هم مختل مینمود، Ajax این مشکل را برطرف میشود. درواقع Object یا شی، xmlhttprequest در Ajax است همه این مشکلات سرعت را رفع نمود و باعث شد تا محتوای بهروز شده در یک صفحه بدون احتیاج به بارگذاری دوباره کل صفحه تغییر کند. درواقع این شی سبب گردید تا داده واردشده توسط کاربر به سمت سرور ارسال شود و سرور پردازشهای لازم را انجام دهد و سپس داده پردازششده یعنی اطلاعات را به مرورگر بدهد بدون آنکه صفحه لود شود، تمام این رفتوبرگشتها در پشت صفحه و بدون اطلاع کاربر انجام میشود. میتوان گفت شئ XMLHttpRequest مهمترین شئ در Ajax است که تقریبا انجام تمام عملیات لازم بر روی دوش آن هست. حال برای ارسال و تبادل اطلاعات توسط شئ XMLHttpRequest دو نوع متد وجود دارد متد GET و متد POST که هر دو یک درخواست HTTP برای تبادل اطلاعات استفاده میکنند که هر کدام مزایا و معایت خوب را دارند.
این دو متد تفاوتهایی دارند و این موارد عبارتند از:
- استفاده از دکمههای بازگشت و رفرش در متد GET بی اثر است در صورتی که در متد POST باعث از دست رفتن اطلاعات میشود که باید درخواست را مجددا از ابتدا دنبال کنید.
- امکان بوکمارک کردن صفحه در متد GET وجود دارد در صورتی که در متد POST نمیتوان صفحات را ضمن ذخیره کردن اطلاعات، بوکمارک کرد.
- امکان استفاده از کش در متد GET وجود دارد اما در متد POST نمیتوان از کش استفاده کرد.
- امکان ذخیره شدن دادهها در متد GET وجود دارد در صورتی که در متد POST نمیتوان تاریخچه را ذخیره کرد.
- حداکثر اندازه برای دادهها در متد GET روی ۲۰۴۸ کاراکتر قرار دارد که در URL اضافه میشوند، در صورتی که در متد POST با محدودیت مواجه نیستید.
- نوع دادهها در متد GET صرفا از نوع اسکی است در صورتی که در متد POST محدودیتی وجود ندارد و به صورت باینری استفاده میشوند.
- امنیت در متد GET به دلیل کش شدن و ذخیره دادهها از طریق URL پایین است اما در متد POST امنیت بالا است و علاوه بر این دادهها هم در تاریخچه مرورگر و لاگ سرور ذخیره نمیشوند.
- اطلاعات در متد GET از طریق آدرس قابل مشاهده هستند در صورتی که در متد POST نمیتوان آنها را مشاهده کرد.
حال که با مزایا و معایب متدهای GET و POST در AJAX آشنا شدید، برای استفاده از آجاکس سعی کنید از متد GET استفاده کنید که از نظر جیتیمتریکس برای بهینه سازی سایت مناسبتر است.
در مقاله بعدی به ادامه این بحث میپردازیم.