Session http ،حافظه موقت صفحات وب

قطعا این مهم‌ترین سوالی است که برای پیدا کردن جوابش به سراغ این مقاله از ویرگول آمده‌اید. اگر بخواهم خیلی ساده و در دو خط مفهوم سشن را برایتان توضیح بدهم، در واقع session مدت زمانی است که کاربر با یک صفحه‌‌ی سایت در تعامل است و Session http به حافظه موقت صفحات وب گفته می‌شود.

خواندن کامل این مقاله به شما کمک می‌کند تا به درک صحیح و جامعی از Session http برسید.

حال Session http چیست؟
بیایید بحث را با ذکر یک مثال پیش ببریم.
یک سایت کتاب فروشی شامل صفحات و بخش‌های مختلفی است از جمله طنز، رمان، شعر، علمی و…. حال اگر شما به عنوان یک کاربر بخواهید سه کتاب با موضوعات متفاوت را بخرید، نیاز است که به صفحات مختلف سایت مراجعه کنید. در ساختار HTTP، اگر بین صفحات یک وب‌سایت در گردش باشید تمامی اطلاعات ذخیره شده قبلی از بین می‌روند و با شما همانند یک کاربر جدید برخورد می‌شود. در حقیقت پروتکل http نیز یک پروتکل state‌ less است و نمی‌تواند اطلاعات یک کلاینت را روی صفحه ذخیره کند. هر بار صفحه‌ای به سمت سرور فرستاده می‌شود، یک نمونه‌ی جدید از آن ساخته خواهد شد که اطلاعات فعلی را از بین می‌برد.

راهکار چیست؟
با توجه به توضیحاتی که داده شد ما نیازمند مکانی برای ذخیره اطلاعات هستیم و session دقیقا همان راه‌حل مشکل ما است. به کمک session اطلاعات دیگر از بین نمی‌روند و در سبد خرید شما (حافظه ی سرور) به مدت محدود باقی می‌مانند. یعنی session http در یک زمان شروع و در یک زمان دیگر منقضی می‌شود.

نحوه کار session
در واقع یک قرارداد مدت‌دار بین شما (به عنوان کلاینت) و سرور برقرار می‌شود که به وسیله آن شما توسط سرور شناسایی می‌شوید. تشخیص این موضوع که یک فرد در صفحات مختلف سایت در حال گشت‌وگذار باشد در زبان php (زبان مرورگرها و صفحات http) به وسیله session حل شده است. سرور سایت اطلاعات شخص مانند password و username را در متغیرهایی به‌نام session ذخیره می‌کند. حال هر بار که در صفحات مختلف سایت جا‌به‌حا می‌شوید، سرور اطلاعات مربوط به session و درخواست‌ها را به سمت مرورگر می‌فرستد تا دیگر نیازی نباشد در هر صفحه مجدد اطلاعات کاربری را وارد کنید.

کی منقضی می‌شود؟
باید در نظر داشت که استفاده زیاد و پی‌درپی از sessionها سبب کاهش سرعت و کندی بارگذاری (Load) صفحات سایت می‌شود. اما در مجموع عمر session کوتاه است و پس از گذشت مدت زمان مشخصی منقضی (expire) می‌شود. مثلا اگر مدت زمان زیادی صفحه باز نشود و یا سایت بسته شود در مراجعه بعدی باید از اول اطلاعات را وارد کنید. علت این کار هم بالا بردن امنیت اطلاعات کاربر است.

بر روي سرور، session چگونه تعریف می‌شود؟
با ورود کاربر به سایت و ثبت اطلاعات یک session با یک شناسه خاص (unique ID - UID) برای او ساخته می‌شود که تمامی اطلاعات و داده‌ها بر روی آن قرار می‌گیرند و در نهایت به شکل کوکی در مرورگر تعریف می‌شود.
لازم به ذکر است که sessionها در سرور ذخیره می‌شوند (برخلاف کوکی‌ها) چون به صورت پیش‌فرض session در حافظه ذخیره می‌شود و بسیار سریع قابل دسترسی است. باید دقت داشت که برای هر کاربر باید یک session جداگانه تعریف کرد.

مراحل ساخت session

  • ایجاد یک session با ID منحصر به فرد
  • ساخت cookie هم‌نام با session در مرورگر کاربر
  • ساخت یک فایل در دایرکتوری موقت تعیین شده بر روی سرور با ID session

فشردن دکمه برای فعال و غیر فعال کردن Sessionها
با توجه به وجود Session در تمام صفحات وب‌سایت، یکی از راهکارهایی که می‌توان برای کاهش سربار و همچنین افزایش میزان بازدهی و کارایی انجام داد، فعال یا غیر فعال کردن Session است! بنابراین بهتر است تنها در صفحات مورد نیاز یک Session را فعال کنیم.

مزایا session

  • سشن وضعیت‌های یک کاربر را در سراسر application نگه می‌دارد.
  • پیاده‌سازی session آسان است و به راحتی می‌توان انواع objectها را ذخیره کرد.
  • به ازای هر کلاینت داده‌ها به صورت مجزا ذخیره می‌کند.

معایب session
زمانیکه تعداد زیادی از کاربران روی سایت باشند چون داده‌های session درون حافظه‌ی سرور است سبب پایین آمدن کارایی سایت می‌شوند.

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