در مطلب «۳ تکنیک بکاند برای بهبود کارایی و افزایش سرعت وبسایت» گفتیم که میتوان از کش در بسیاری از بخشهای یک فروشگاه اینترنتی استفاده کرد. در این مطلب در مورد افزایش سرعت صفحات با استفاده از کش بیشتر توضیح میدهیم.
کش، مثل پیاز لایه لایه است. لایهای بیرونی وجود دارد که به راحتی میتوانید آن را ببینید. اما لایههای پایینتری هم وجود دارد.
وبسایتها هم همینطور کار میکنند. اعمال کش در لایههای پایین باعث افزایش سرعت صفحات در لایههای بالاتر میشود. از اولین لایه، یعنی مرورگر، شروع میکنیم.
کش مرورگر
مرورگر کاربران میتواند کش فروشگاه شما باشد. مرورگر فایلهایی را که از سرور درخواست میکند ذخیره و کش میکند تا مجبور نباشد دوباره درخواستی به سرور بفرستد.
وقتی مرورگر درخواستی برای بارگذاری یک فایل (مثلاً تصویری با نام ipad-white.jpg) به سرور ارسال میکند، سرور آن فایل را آماده میکند و به مرورگر میفرستد. دفعهی بعد که بخواهید آن فایل را ببینید، مرورگر متوجه میشود که قبلاً آن را دانلود کرده است. بنابراین دیگر درخواستی به سرور نمیفرستد. در عوض از فایل دانلود و کش شده استفاده میکند و آن را به شما نشان میدهد. این کار هم در زمان و هم در پهنای باند صرفهجویی میکند.
اگر با وبسایتی برخورد کردید که همچنان اطلاعات قدیمی را نمایش میداد، و مجبور شدید صفحه را مجدداً بارگذاری کنید، مشکل از کش مرورگر شماست. بارگذاری مجدد باعث میشود مرورگر کش خود را خالی کند و همه چیز را دوباره دانلود کند.
تنظیم مرورگر برای کش آسان است. اغلب مرورگرها بدون نیاز به تنظیمات خاصی این کار را انجام میدهند. اما در بعضی موارد سرور میتواند تنظیماتی اعمال کند تا کش مرورگر بهینه شود.
وب سرور
لایهی پایینتر، وب سرور است. وب سرور همان جایی است که مرورگر درخواستهایش را میفرستد.
وب سرور فایلها را با یکی از راههای زیر به مرورگر میفرستد:
- وب سرور فایلهای موجود را در دیسک سخت سرور پیدا میکند و برای مرورگر میفرستد.
- وب سرور فایلهایی را که باید ساخته شوند با کمک سرور اپلیکیشن (application server) میسازد. سرور اپلیکیشن لایهای پایینتر است.
- اگر فایل روی دیسک سخت یا سرور اپلیکیشن پیدا نشد، وب سرور خطای ۴۰۴ به مرورگر میفرستد.
سریعترین راه این است که فایل روی دیسک سخت موجود باشد. در این حالت وب سرور فایل را بلافاصله به مرورگر میفرستد. سرعت این عملیات تنها به سرعت ارتباط بین مرورگر و وب سرور بستگی دارد.
گاهی فایلهای درخواست شده توسط سرور اپلیکیشن ساخته و در کش ذخیره میشوند. در این حالت به جای این که هر بار فایل ساخته شود، از کش خوانده میشود، وب سرور آن را میخواند و به مرورگر میفرستد. به این ترتیب سرعت افزایش مییابد.
خیلی از وبسایتها از شبکهی تحویل محتوا (CDN) استفاده میکنند. این یعنی وب سرورهایی در اطراف جهان هست که نسخهای از فایل شما را بر روی خود ذخیره کردهاند. مرورگر میتواند چندین درخواست به صورت همزمان برای دریافت چندین فایل بفرستد. بنابراین وقتی مرورگر درخواست بارگذاری فایلها را به سرور اصلی و چندین سرور دیگر ارسال کند، سرعت بارگذاری صفحه بیشتر از حالتی میشود که مرورگر یک درخواست برای یک سرور بفرستد.
سرور اپلیکیشن
سرور اپلیکیشن لایهای است که در آن صفحههای پویا ساخته میشوند. گاهی سرور اپلیکیشن بخشی از وب سرور است، مثل mod_php. اما در اغلب موارد سرور اپلیکیشن نرمافزاری جداگانه است که میتواند روی همان کامپیوتر وب سرور باشد یا نباشد.
وقتی وب سرور نتواند فایل مورد درخواست مرورگر را پیدا کند، از سرور اپلیکیشن میخواهد فایل را ایجاد کند. این اتفاق باعث میشود کد بکاند فروشگاه اینترنتی شما شروع به اجرا کند و فایل را بسازد. این فایل به وب سرور بازگردانده میشود و در نهایت مشتری آن را میبیند.
در لایهی سرور اپلیکیشن گزینههای زیادی برای کش وجود دارد:
- تمام صفحه کش میشود و در صورت درخواست به وب سرور فرستاده میشود.
- قسمتی از صفحه کش میشود و در هنگام ساخته شدن صفحه درون آن قرار میگیرد.
- اشیاء برنامهنویسیشده و محاسبات کش میشوند. وقتی صفحه درحال ساخته شدن است، این اشیاء و محاسبات در صورت نیاز فراخوانی میشوند و نیازی به ساختن یا محاسبه کردن آنها نیست. برای مثال محتویات سبد خرید و قیمت نهایی آن میتواند کش شود.
برای این لایه تکنیکها و ابزارهای کش زیادی وجود دارد.
سرور پایگاه داده
یک لایه پایینتر از سرور اپلیکیشن، سرور پایگاه داده قرار دارد. فروشگاههای اینترنتی به دادهی زیادی نیاز دارند، به همین خاطر هر صفحه نیاز به پیدا کردن، مرتب کردن، بهروز کردن و محاسبهی مقدار زیادی داده دارد.
این یعنی سرور پایگاه دادهی شما همیشه فعال است.
داخل سرور پایگاه داده لایهها و گزینههای کش دیگری وجود دارد. با درست تنظیم کردن پایگاه داده میتوانید از کش داخلی آن استفاده کنید و تمام لایههای بالا (سرور اپلیکیشن، وب سرور و مرورگر) را سریعتر کنید.
برنامهنویسها و توسعهدهندگان بیشتر وقت خود را برای بهینه کردن ارتباط لایهی اپلیکیشن و لایهی پایگاه داده میکنند.
سختافزار
لایهی پایینتری هم وجود دارد: سختافزار سرور. لایههای کش زیادی برای سختافزار وجود دارد. اما در بیشتر موارد بهصرفه نیست که آنها را بهینه کنید.
برای افزایش سرعت صفحات فروشگاه دو تکنیک غیرمرتبط به کش وجود دارد که بهصرفهتر هستند:
- ارتقا: یعنی استفاده از یک سرور سریعتر با منابع بیشتر. حافظه را دو برابر کنید، پردازنده را سریعتر کنید، دیسک سخت سریعتری اضافه کنید و غیره.
- افزایش: یعنی اضافه کردن سرورهای دیگری در کنار سرور اصلی تا کارها را میان خود تقسیم کنند. به جای این که یک سرور ۱۰۰ درصد کار را انجام دهد، دو سرور هر کدام ۵۰ درصد کار را انجام میدهند.
اغلب بهصرفهتر است که به جای بهینه کردن کش سختافزار، یکی از دو کار بالا را انجام دهید.
لایهها همدیگر را کامل میکنند
تمام لایهها (مرورگر، سرورها و سختافزار) در کنار یکدیگر کار میکنند.
سرور اپلیکیشن میتواند یک صفحه را کش کند تا دفعهی بعد سرور پایگاه داده درگیر نشود. وب سرور میتواند یک صفحه را از سرور اپلیکیشن بگیرد و در کش ذخیره کند تا دفعهی بعد نیازی به ایجاد مجدد آن توسط اپلیکیشن نباشد.
بهبود در یک لایه منجر به بهبود در لایههای بالاتر میشود. به همین ترتیب، اگر لایههای پایینتر درست کار نکنند، لایههای بالا هم کند عمل میکنند.
کش لازم و ضروری است و قدرت زیادی در افزایش سرعت صفحات دارد. در لایههای مختلف فروشگاه خود بگردید تا ببینید کدام لایه دلیل اصلی افت سرعت است. اگر برای مثال لایهی اپلیکیشن مشکل داشت، بهبود لایهی پایگاه داده کمک چندانی نخواهد کرد.
بیشتر بخوانید: افزایش سرعت فروشگاه اینترنتی (۱۰ راهکار)

به دنبال مسیر مناسب برای فروشگاه خود هستید؟
همیشه اول با حرفهایها مشورت کنید.
پیام و یا پرسشتان را بنویسید.