تگگذاری سمت سرور روشی جدید برای استفاده از گوگل تگ منیجر برای سنجش عملکرد برنامه شما در دستگاههای مختلف است. کانتینرهای سرور از همان مدل تگ، تریگر و متغیری که به آن عادت دارید استفاده میکنند، ضمن اینکه ابزارهای جدیدی را نیز ارائه میدهند که به شما امکان میدهند فعالیت کاربر را در هر کجا که اتفاق میافتد، اندازهگیری کنید.
یک پیکربندی برچسبگذاری معمولی بدون برچسبگذاری سمت سرور، برای ارسال دادههای اندازهگیری به سرورهای جمعآوری مختلف، به یک کانتینر در صفحه متکی است. شکل 1 نمونهای از نحوه ارسال دادهها توسط یک کانتینر وب Tag Manager که در یک مرورگر وب اجرا میشود را به چندین سرور نشان میدهد.

شکل ۱: نموداری از سایتی که برای استفاده از کانتینر وب گوگل تگ منیجر تجهیز شده است.
در مقابل، یک کانتینر سرور در مرورگر کاربر یا روی تلفن او اجرا نمیشود. در عوض، روی سروری که شما کنترل میکنید، اجرا میشود.

شکل ۲: نمونهای از پیکربندی برچسبگذاری که از یک کانتینر سرور استفاده میکند.
سرور در پروژه پلتفرم ابری گوگل شما - یا در محیط دیگری به انتخاب شما - اجرا میشود و فقط شما به دادههای موجود در سرور دسترسی دارید تا زمانی که تصمیم بگیرید آنها را به جای دیگری ارسال کنید. شما کنترل کامل بر نحوه شکلدهی به دادهها و مسیردهی آنها از سرور را دارید. برچسبها با استفاده از فناوری جاوا اسکریپت سندباکس شده ساخته میشوند. مجوزها به شما امکان مشاهده آنچه تگ میتواند انجام دهد را میدهند و سیاستها به شما امکان میدهند مرزهایی را در اطراف کانتینر تعیین کنید.
سرور درخواستهای وب را از دستگاه کاربر دریافت میکند و آن درخواستها را به رویدادها تبدیل میکند. هر رویداد توسط تگها، تریگرها و متغیرهای کانتینر پردازش میشود. تگها، تریگرها و متغیرها در یک کانتینر سرور دقیقاً مانند سایر انواع کانتینرها کار میکنند: تریگرها هر رویداد را برای یافتن شرایط خاص بررسی میکنند و در صورت لزوم، تگهایی را فعال میکنند که دادههای رویداد را برای پردازش ارسال میکنند.
این مدل دو سوال مهم را برای کانتینرهای سرور مطرح میکند:
- دادههای اندازهگیری چگونه از دستگاه کاربر به کانتینر سرور میرسند؟
- چگونه دادههای اندازهگیری ارسال شده به یک کانتینر سرور به یک رویداد تبدیل میشوند؟
پاسخ هر دو سوال، نوع جدیدی از موجودیت برای استفاده در کانتینرهای سرور است: یک کلاینت .
نحوه کار کلاینتها
کلاینتها رابطهایی بین نرمافزار در حال اجرا روی دستگاه کاربر و کانتینر سرور شما هستند. کلاینت دادههای اندازهگیری را از یک دستگاه دریافت میکند، آن دادهها را به یک یا چند رویداد تبدیل میکند، دادههایی را که باید در کانتینر پردازش شوند، مسیریابی میکند و نتایج را برای ارسال به درخواستکننده بستهبندی میکند.
خیلی چیزها! بیایید نگاه دقیقتری به هر بخش به صورت جداگانه بیندازیم. شکل ۳ دادههایی را که از مرورگر وب کاربر به کانتینر سرور و از وب سرور شما به کانتینر سرور جریان مییابند، نشان میدهد.

شکل ۳: یک کلاینت متفاوت هر جریان داده را مدیریت میکند.
کلاینتها دادههای اندازهگیری را از یک دستگاه دریافت میکنند. فرض کنید میخواهید فعالیت کاربر را در سه مکان اندازهگیری کنید: یک وبسایت، یک برنامه تلفن همراه و یک توستر هوشمند. وبسایت شما از Google Analytics، برنامه تلفن همراه شما از Firebase Analytics و توستر شما از یک پروتکل اختصاصی به نام "ToastMeasure" استفاده میکند.
تجهیز این سه دستگاه با Google Tag Manager معمولاً به یک کانتینر متفاوت برای هر پلتفرم نیاز دارد. از آنجایی که کانتینر سرور روی دستگاه اجرا نمیشود، یک کانتینر میتواند ابزار تحلیلی را برای هر سه پلتفرم دستگاه مدیریت کند. با این حال، یک مشکل وجود دارد. همه این دستگاهها به یک روش ارتباط برقرار نمیکنند. پروتکل Google Analytics با پروتکل ToastMeasure یکسان نیست. اینجاست که کلاینتها وارد میشوند.
به جای آن سه کانتینر، کانتینر سرور شما سه کلاینت دارد. هر درخواستی که وارد کانتینر میشود، توسط هر کلاینت به ترتیب اولویت، یعنی کلاینت با بالاترین اولویت، پردازش میشود. اولین کاری که هر کلاینت انجام میدهد این است که تصمیم بگیرد آیا میداند چگونه آن نوع درخواست را پردازش کند یا خیر. اگر بتواند، کلاینت درخواست را "ادعا" میکند و به مرحله بعدی پردازش ادامه میدهد. عمل ادعای درخواست، از اجرای کلاینتهای بعدی جلوگیری میکند. اگر کلاینت نتواند درخواست را پردازش کند، هیچ کاری انجام نمیدهد و به سایر کلاینتها اجازه میدهد تا تصمیم بگیرند که آیا درخواست را مدیریت کنند یا خیر.
کلاینتها دادههای درخواست را به یک یا چند رویداد تبدیل میکنند. هنگامی که کلاینت ToastMeasure درخواستی را دریافت کرد، باید آن را به چیزی تبدیل کند که بقیه کانتینر آن را بفهمد. آن چیز مجموعهای از رویدادها است.
رویدادها چیزهایی هستند که اتفاق میافتند و شما میخواهید آنها را اندازهگیری کنید. آنها میتوانند هر چیزی باشند: start_toasting ، finish_toasting یا buy_bread . توصیههایی در مورد ساختار رویدادهایی که یک کلاینت تولید میکند وجود دارد، اما تنها شرط لازم این است که بقیه کانتینر آنها را درک کند.
کلاینتها کانتینر را اجرا میکنند. کلاینت درخواست را دریافت کرده و آن را به رویدادها تبدیل کرده است. اکنون زمان تگها، تریگرها و متغیرها است. کلاینت هر رویداد را برای پردازش بیشتر به بقیه کانتینر منتقل میکند.
کلاینتها نتایج را برای ارسال به دستگاه، بستهبندی میکنند. پس از اجرای کانتینر، زمان پاسخ به توستر فرا میرسد. پاسخ میتواند اشکال مختلفی داشته باشد. شاید کلاینت فقط بگوید "خب، انجام شد". شاید یکی از تگها بخواهد درخواست را به سرور جمعآوری دیگری هدایت کند. یا شاید یکی از تگها به چراغهای توستر دستور تغییر رنگ دهد. هر اتفاقی که قرار است بیفتد، وظیفه کلاینت است که نتایج را بستهبندی کرده و برای درخواستکننده ارسال کند.
خوشبختانه، Tag Manager بخش زیادی از این کار را برای شما انجام میدهد. کانتینرهای سرور با دو کلاینت ارائه میشوند: Google Analytics و Measurement Protocol. این کلاینتها ابزارهایی را که برای شروع ابزارسنجی برنامه خود به محض ایجاد کانتینر خود نیاز دارید، در اختیار شما قرار میدهند.
یک مثال کوتاه
بیایید یک مثال سریع را بررسی کنیم تا ببینیم چگونه همه قطعات با هم جور در میآیند. در این مثال، موارد زیر را ایجاد خواهید کرد:
- یک وبسایت ساده که از gtag.js برای ارسال رویداد
clickبه یک کانتینر سرور استفاده میکند. - یک کلاینت گوگل آنالیتیکس که رویداد را دریافت میکند.
- تریگری که با رویداد
clickفعال میشود. - یک تگ گوگل آنالیتیکس که دادههای رویداد را برای پردازش به گوگل آنالیتیکس ارسال میکند.
برای این مثال، فرض میکنیم که شما قبلاً کانتینر سرور خود را ایجاد و مستقر کردهاید .
پیکربندی gtag.js
ابتدا، gtag.js را طوری پیکربندی کنید که دادهها را به کانتینر سرور شما ارسال کند. با gtag.js، ارسال دادهها به کانتینر سرور شما درست مانند ارسال دادهها به گوگل آنالیتیکس، با یک تغییر، کار میکند. مانند صفحه مثال زیر، گزینه پیکربندی server_container_url را طوری تنظیم کنید که به کانتینر سرور اشاره کند.
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID', {
server_container_url: 'https://analytics.example.com',
});
</script>
به جای TAG_ID ، شناسه تگ خود را قرار دهید. به جای https://analytics.example.com ، آدرس کانتینر سرور خود را قرار دهید.
سپس، یک تابع sendEvent() برای مدیریت رویدادهای click اضافه کنید:
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID', {
server_container_url: 'https://analytics.example.com',
});
function sendEvent() {
gtag('event', 'click');
}
</script>
<button onclick="javascript:sendEvent()">Send Event</button>
به جای TAG_ID ، شناسه تگ خود را قرار دهید. به جای https://analytics.example.com ، آدرس کانتینر سرور خود را قرار دهید.
با این پیکربندی، کنترلکنندههای رویداد مانند تابع sendEvent() که در این مثال گنجانده شده است، یک رویداد click را به کانتینر سرور شما ارسال میکنند.
کلاینت گوگل آنالیتیکس
کانتینر شما به یک کلاینت نیاز دارد تا رویداد را پس از رسیدن به سرور دریافت کند. خوشبختانه، کانتینرهای سرور با یک کلاینت گوگل آنالیتیکس از پیش نصب شده ارائه میشوند، بنابراین شما این مرحله را انجام دادهاید.
ماشه را کلیک کنید
سپس، یک تریگر ایجاد کنید که در رویداد click فعال شود. یک تریگر سفارشی ایجاد کنید که وقتی متغیر داخلی Event Name برابر با "click" شود، فعال شود.

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