پیج کیشنگ، CDNs اور کنسینٹ بینرز: غلط رضامندی کی حالت پیش کرنے سے کیسے بچیں

تیز صفحات، غلط رضامندی

پیج کیشنگ رفتار اور ہوسٹنگ کے اخراجات کے لیے آپ کے کیے جانے والے بہترین کاموں میں سے ہے۔ یہ رضامندی کی ترتیب کو بغیر محسوس کیے توڑنے کے آسان ترین طریقوں میں سے بھی ہے۔ کیش بالکل وہی کرتی ہے جو اسے کہا جاتا ہے: ایک جواب ایک بار محفوظ کرتی ہے اور اسے ہر اس شخص کو دیتی ہے جو اسی کلید سے مماثل ہو۔ اگر محفوظ شدہ جواب میں کوئی ایسی چیز ہو جو ایک وزیٹر کے رضامندی کے انتخاب یا مقام سے مخصوص ہو تو اگلے وزیٹر کو بھی وہی ملتی ہے۔

یہ گائیڈ ان کیشنگ تہوں کا احاطہ کرتی ہے جو عام طور پر پبلشر کی سائٹ کے سامنے ہوتی ہیں — CDN ایج کیشز، فل پیج کیشنگ پلگ اِنز، reverse proxies، service workers اور خود براؤزر — اور یہ کہ ہر ایک کو غلط رضامندی کا تجربہ پیش کرنے سے کیسے روکا جائے۔

بنیادی اصول: رضامندی کو کیشڈ HTML سے باہر رکھیں

سب سے محفوظ فن تعمیر کیشڈ HTML صفحے کو رضامندی سے غیر جانبدار رینڈر کرتا ہے۔ صفحے میں CMP لوڈر اور آپ کے ٹیگز بلاک یا انتظار کی حالت میں ہوتے ہیں، مگر اس مخصوص وزیٹر کے بارے میں کوئی فیصلہ نہیں ہوتا۔ پھر CMP براؤزر میں چلتا ہے، محفوظ شدہ انتخاب پڑھتا ہے، فیصلہ کرتا ہے کہ بینر دکھانا ہے یا نہیں، اور اسی کے مطابق ٹیگز جاری کرتا ہے۔

مسائل تب شروع ہوتے ہیں جب سرور رینڈر کے وقت رضامندی کے فیصلے کرتا ہے، مثلاً:

جب وہ صفحہ کیش ہو جاتا ہے تو پہلے وزیٹر کی حالت سب کی حالت بن جاتی ہے۔ ٹریکنگ مسترد کرنے والے وزیٹر کو ایسا صفحہ مل سکتا ہے جس کے ٹیگز پہلے سے فعال ہوں، یا نئے وزیٹر کو شاید بینر کبھی نظر نہ آئے کیونکہ کیشڈ کاپی کسی ایسے شخص سے آئی تھی جو اسے پہلے بند کر چکا تھا۔

“Vary: Cookie” شاذ ہی حل کیوں ہوتا ہے

ہر وزیٹر کے مخصوص مواد کا نصابی حل کیشز کو کوکی ہیڈر پر مختلف ہونے کو کہنا ہے۔ عملاً وزیٹرز بہت سی کوکیز رکھتے ہیں جن کی قدریں منفرد ہوتی ہیں، اس لیے پورے کوکی ہیڈر پر vary کرنا عموماً آپ کی کیش ہٹ ریٹ کو تقریباً صفر کر دیتا ہے۔ کچھ CDNs آپ کو کیش کلید ایک ہی کوکی کی قدر سے بنانے دیتے ہیں، جو اس صورت میں قابلِ عمل ہے جب آپ کی رضامندی کی کوکی کی ممکنہ حالتیں تھوڑی ہوں، مگر یہ پیچیدگی بڑھاتا ہے اور پھر بھی کیشڈ کاپیوں کی تعداد کو ضرب دیتا ہے۔ فیصلے کو براؤزر میں منتقل کرنا زیادہ سادہ ہے اور کیش کو کارآمد رکھتا ہے۔

ایج پر جغرافیہ

بہت سے پبلشرز علاقے کے مطابق مختلف بینرز دکھاتے ہیں: EU اور UK کے لیے آپٹ اِن بینر، امریکی ریاستوں کے لیے آپٹ آؤٹ نوٹس، اور باقی جگہوں پر کچھ ہلکا۔ اگر سرور وزیٹر کے IP ایڈریس سے ویریئنٹ چنتا ہے اور وہ صفحہ کیش ہو جاتا ہے تو یورپی قاری کو کیشڈ امریکی صفحہ مل سکتا ہے، یا اس کا الٹ۔

تین نمونے اس سے بچاتے ہیں:

  1. کلائنٹ سائیڈ جیو لوکیشن۔ CMP کو براؤزر میں علاقہ متعین کرنے دیں، تاکہ کیشڈ HTML سب کے لیے ایک جیسا رہے۔
  2. کیش کلید میں ملک۔ اگر آپ کو ایج پر فیصلہ کرنا ہی ہو تو وہ ملک کوڈ جو آپ کا CDN فراہم کرتا ہے کیش کلید میں شامل کریں۔ آپ کو ہر ملک کے لیے ایک کیشڈ کاپی ملتی ہے جو قابلِ پیش گوئی ہے۔
  3. غیر کیشڈ ایج منطق۔ علاقائی فیصلہ ایک ایج فنکشن میں چلائیں جو ایک چھوٹی غیر کیشڈ قدر کو بصورتِ دیگر کیشڈ صفحے میں انجیکٹ کرے۔

جو بھی چنیں، اسے دستاویز کریں۔ جیو بگز کو دوبارہ پیدا کرنا سب سے مشکل ہوتا ہے، کیونکہ وہ صرف ایک جگہ کے وزیٹرز کے لیے ظاہر ہوتے ہیں جنہیں اتفاقاً کسی اور جگہ کے شخص کا کیش کیا ہوا صفحہ مل جاتا ہے۔

CMP اسکرپٹ کو خود کیش کرنا

CMP لوڈر کو لمبے عرصے کے لیے کیش کرنا کارکردگی کے لیے اچھا ہے، مگر کنفیگریشن بدلنے پر اس کی قیمت ہے۔ اگر آپ وینڈرز، مقاصد یا بینر کا متن اپ ڈیٹ کریں اور اسکرپٹ یا کنفیگریشن فائل ایک سال کے لیے کیش ہو تو کچھ وزیٹرز پرانا ورژن دیکھتے رہیں گے۔ چیک کریں کہ آپ کا CMP اپنی فائلوں کو ورژن کیسے کرتا ہے: بدلتا ہوا فائل نام یا ورژن پیرامیٹر آپ کو جارحانہ کیشنگ کرنے دیتا ہے اور تبدیلیاں فوراً نافذ بھی کرتا ہے۔ یہ بھی تصدیق کریں کہ آپ کا اپنا CDN تیسرے فریق کے اسکرپٹ URLs سے کوئری سٹرنگز نہیں ہٹاتا اگر CMP ان پر انحصار کرتا ہے۔

Service Workers اور آف لائن کیشز

جن سائٹس میں پروگریسو ویب ایپ کی تہہ ہو وہ اکثر HTML کو service worker میں کیش کرتی ہیں۔ وہی اصول لاگو ہوتا ہے: کبھی ایسا صفحہ ذخیرہ نہ کریں جو کسی مخصوص رضامندی کے فیصلے کو ظاہر کرتا ہو۔ رضامندی سے متعلق endpoints اور پریفرنس سینٹر کے صفحات کو service worker کیشنگ سے خارج کریں، اور یقینی بنائیں کہ CMP کی تازہ کنفیگریشن ہمیشہ حاصل کی جا سکے۔

بیک/فارورڈ کیش

جدید براؤزر حال میں دیکھے گئے صفحات کو میموری میں رکھتے ہیں تاکہ بیک بٹن انہیں فوراً بحال کر دے۔ اگر کوئی وزیٹر ایک صفحے پر پریفرنس سینٹر کھولتا ہے، رضامندی واپس لیتا ہے، پھر بیک دباتا ہے تو بحال شدہ صفحے پر ٹیگز اب بھی پہلے کی طرح چل رہے ہو سکتے ہیں۔ pageshow ایونٹ سنیں اور اس کی persisted خاصیت چیک کریں: جب صفحہ اس کیش سے بحال ہو تو محفوظ شدہ رضامندی کی حالت دوبارہ پڑھیں اور اس کے مطابق ٹیگز روکیں یا شروع کریں۔

ٹیسٹنگ کا معمول

اہم نکات

← بلاگ سب پڑھیں →