تفاوت Hits، Visit، Visitiors
در یک جمله: Hit یعنی یک درخواست HTTP برای یک فایل، Visit (یا Session) یعنی یک نشست پیوسته مرور توسط یک کاربر که پس از مدتی بیفعالیتی بسته میشود، و Visitor یعنی یک کاربر یکتا در یک بازه زمانی مشخص. چون باز شدن یک صفحه دهها فایل را از سرور میگیرد، عدد Hits معمولاً چندین برابر تعداد واقعی بازدیدکنندگان است و بهتنهایی معیار خوبی برای سنجش ترافیک نیست.
Hit چیست
هر بار که مرورگر چیزی را از وبسرور میخواهد، یک درخواست ساخته میشود و وبسرور آن را در فایل لاگ مینویسد. فرقی نمیکند آن چیز یک صفحه HTML باشد یا فایل CSS، فایل جاوااسکریپت، فونت، تصویر یا حتی /favicon.ico. هر خط از فایل access.log یک Hit است.
یعنی اگر صفحه اصلی سایت از یک فایل HTML، سه فایل CSS، شش فایل جاوااسکریپت، دو فونت و بیستوپنج تصویر ساخته شده باشد، باز شدن همین یک صفحه حدود ۳۷ Hit تولید میکند. درخواستهای ناموفق با کد ۴۰۴، فراخوانیهای AJAX، خزندههای موتورهای جستوجو و اسکنرهای مزاحم هم به همین شکل شمرده میشوند.
اگر میخواهید ببینید کدام درخواستهای صفحه شما خطا برمیگردانند یا سرور چقدر دیر پاسخ میدهد، ابزار بررسی سایت زمان پاسخ اولیه سرور و خطاهای کنسول و شبکه صفحه را به شما نشان میدهد.
PageView چیست
PageView فقط درخواستهایی را میشمارد که یک «صفحه» را فراخوانی میکنند؛ یعنی فایلهایی با پسوندهایی مانند .html، .php و .aspx یا آدرسهایی که به یک مسیر ختم میشوند. تصویر و CSS و جاوااسکریپت در این عدد نمیآیند و به همین دلیل PageView تصویر بسیار واقعیتری از مصرف محتوای سایت میدهد تا Hits.
Visit یا Session چیست
Visit یک دوره مرور پیوسته از سوی یک بازدیدکننده است. از اولین Hit او روی سایت شروع میشود و تا وقتی کاربر فعال است ادامه دارد؛ اگر مدت مشخصی هیچ درخواست تازهای نفرستد، نشست بسته میشود و درخواست بعدی یک Visit جدید به حساب میآید. تعداد صفحههای دیدهشده در این فاصله، روی عدد Visit اثری ندارد.
طول این بازه انقضا در ابزارهای مختلف یکسان نیست و معمولاً قابل تنظیم است؛ برای نمونه گوگل آنالیتیکس بهصورت پیشفرض ۳۰ دقیقه بیفعالیتی را پایان نشست میگیرد، در حالی که تحلیلگرهای مبتنی بر لاگ بازههای دیگری دارند. پس اگر عدد Visit دو ابزار با هم نمیخواند، اول تنظیم انقضای نشست را در هر دو مقایسه کنید.
Visitor یا بازدیدکننده یکتا
Visitor یعنی یک فرد مجزا در یک بازه زمانی مشخص؛ روزانه، هفتگی یا ماهانه. یک بازدیدکننده میتواند در یک روز چند Visit، دهها PageView و صدها Hit بسازد، ولی در ستون Visitors فقط یک بار شمرده میشود. به همین دلیل عدد بازدیدکننده یکتا بدون ذکر بازه زمانیاش بیمعنی است.
شناسایی این فرد یا با آدرس IP انجام میشود یا با کوکی، و هیچکدام بیعیب نیستند. با IP، همه کاربران پشت یک NAT سازمانی یا اپراتور موبایل یک نفر دیده میشوند و برعکس، کاربری که IP او در طول روز عوض میشود چند نفر. با کوکی هم پاک کردن حافظه مرورگر، حالت ناشناس و استفاده از چند دستگاه، یک نفر را به چند Visitor تبدیل میکند. پس Unique Visitors همیشه یک تخمین است، نه شمارش دقیق.
یک تله رایج هم وقتی پیش میآید که سایت پشت CDN، پروکسی معکوس یا لود بالانسر باشد: در این حالت همه درخواستها با آیپی همان واسط به وبسرور میرسند و لاگ خام عملاً همه کاربران را یک نفر میبیند. راهحل، خواندن آیپی واقعی از هدر X-Forwarded-For است؛ در انجینایکس با ماژول ngx_http_realip_module و در آپاچی با mod_remoteip و دستور RemoteIPHeader. اگر ترجیح میدهید این تنظیمات را خودتان انجام ندهید، آپاچی، انجینایکس و لایتاسپید در فهرست خدمات پشتیبانی و مدیریت سرور آنلاین سرور آمدهاند.
چرا Hits آمار را متورم نشان میدهد
فرض کنید یک نفر امروز وارد سایت شما شده و سه صفحه را دیده است. جدول زیر نشان میدهد همین یک رویداد ساده در چهار واحد مختلف چه عددی میسازد:
| واحد | چه چیزی را میشمارد | عدد گزارششده |
| Hits | هر فایل درخواستی | حدود ۱۱۱ |
| PageViews | فقط صفحهها | ۳ |
| Visits | نشست مرور | ۱ |
| Visitors | فرد یکتا | ۱ |
عدد ۱۱۱ در برابر عدد ۱؛ به همین دلیل است که جمله «ماهانه چند میلیون Hit» تقریباً هیچ چیزی درباره محبوبیت واقعی یک سایت نمیگوید. همین یک ستون، تفاوت میان یک گزارش فنی و یک گزارش تبلیغاتی است.
برای پهنای باند، بایت بشمارید نه Hit
دلیل اصلی اینکه نباید پهنای باند را با Hit تخمین زد این است که Hit اصلاً واحد حجم نیست. یک درخواست برای style.css ممکن است چند ده کیلوبایت باشد و یک درخواست برای یک فایل نصبی چند صد مگابایت؛ هر دو دقیقاً یک Hit هستند. پس یک عدد Hit ثابت، بسته به اینکه چه فایلهایی درخواست شدهاند، میتواند به حجمهای کاملاً متفاوتی از ترافیک ختم شود.
معیار درست، مجموع بایتهای ارسالشده است. در قالب استاندارد combined که هم آپاچی و هم انجینایکس از آن استفاده میکنند، ستون دهم هر خط لاگ همان حجم بدنه پاسخ است:
awk '{s+=$10} END {printf "%.2f GBn", s/1024/1024/1024}' /var/log/nginx/access.log
و برای اینکه ببینید کدام فایلها بیشترین سهم را از پهنای باند میبرند:
awk '{b[$7]+=$10} END {for (f in b) printf "%.1f MB %sn", b[f]/1024/1024, f}' /var/log/nginx/access.log | sort -rn | head -20
خروجی این دستور اغلب غافلگیرکننده است: در خیلی از سایتها چند تصویر بهینهنشده یا یک فایل قابل دانلود، سهمی بزرگتر از کل صفحههای HTML میبرند. اگر فایلهای حجیم بخش عمده ترافیک شما را میبرند، انتقال آنها به یک هاست دانلود فشار را از سایت اصلی برمیدارد. برای تخمین بار سرور هم بهجای Hit ماهانه، تعداد درخواست در ثانیه در ساعت اوج را بشمارید.
وقتی همین دو عدد یعنی حجم ترافیک و نرخ درخواست را در دست داشته باشید، مقایسه پلنهای میزبانی وب هم بر پایه فضا و پهنای باند معنا پیدا میکند، نه بر پایه عددی که ابزار آمار بهعنوان Hit نشان میدهد.
این اعداد را از کجا بخوانیم
دو خانواده ابزار وجود دارد و عمداً عددهای متفاوتی میدهند:
- ابزارهای مبتنی بر لاگ سرور مانند AWStats، Webalizer و GoAccess. اینها هر درخواست را میبینند؛ شامل رباتها، خطاها و فایلهای ایستا، و Hits واقعی فقط اینجا دیده میشود. AWStats و Webalizer معمولاً بهصورت آماده در کنترلپنلهایی مثل cPanel و DirectAdmin وجود دارند، ولی GoAccess را باید خودتان روی سرور نصب کنید.
- ابزارهای مبتنی بر جاوااسکریپت مانند گوگل آنالیتیکس که فقط وقتی کدشان در مرورگر اجرا شود چیزی ثبت میکنند. رباتها و کاربرانی که اسکریپت را مسدود کردهاند از دید آنها پنهاناند و اصلاً Hit گزارش نمیکنند.
برای یک گزارش سریع روی خود سرور میتوانید از این دستور استفاده کنید:
goaccess /var/log/nginx/access.log --log-format=COMBINED
نصب چنین ابزارهایی و دسترسی به لاگ خام روی سرور مجازی یا سرور اختصاصی ممکن است، چون به دسترسی در سطح مدیر سیستم نیاز دارد؛ در میزبانی اشتراکی باید به گزارشهای آماده کنترلپنل بسنده کنید.
سه اشتباه رایج که بهتر است کنار گذاشته شود
- گزارش کردن Hits بهعنوان «تعداد بازدید» سایت. این عدد بیشتر از هر چیز به تعداد فایلهای قالب شما بستگی دارد؛ کافی است چند تصویر اضافه کنید تا بدون یک بازدیدکننده تازه، «آمار» بالا برود.
- مقایسه مستقیم عدد دو ابزار مختلف. تا وقتی روش شمارش، فیلتر ربات و انقضای نشست یکی نباشد، اختلاف طبیعی است.
- ظرفیتسنجی با Hit؛ برای پهنای باند بایت بشمارید و برای توان پردازشی، درخواست در ثانیه.
جمعبندی ساده: برای سنجش محتوا از PageView استفاده کنید، برای سنجش رفتار کاربر از Visit و Visitor، و برای برنامهریزی پهنای باند و منابع از بایت و نرخ درخواست. Hits را برای عیبیابی لاگ و بررسی رفتار رباتها نگه دارید، نه برای گزارش به مدیر یا مشتری.
