کلائنٹ سائیڈ رینڈرنگ بمقابلہ سرور سائیڈ رینڈرینگ

ابتدا میں ، ویب فریم ورک کے سرور پر ملاحظہ کیے گئے خیالات تھے۔ اب یہ مؤکل پر ہو رہا ہے۔ آئیے ہر نقطہ نظر کے فوائد اور نقصانات کو ڈھونڈیں۔

کارکردگی

سرور سائیڈ رینڈرنگ کے ساتھ ، جب بھی آپ نیا ویب صفحہ دیکھنا چاہتے ہیں ، آپ کو باہر جاکر اسے حاصل کرنا ہوگا:

سرور سائڈ رینڈرینگ کیسے کام کرتی ہے اس کا ڈایاگرام

جب آپ کھانا چاہتے ہو تو سپر مارکیٹ میں جانے کے ل This یہ آپ کے ساتھ مشابہ ہے۔

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

کلائنٹ سائیڈ رینڈرنگ کس طرح کام کرتی ہے اس کی ڈایاگرام

جب کارکردگی کی بات ہوتی ہے تو ہر نقطہ نظر کے اپنے فوائد اور نقصانات ہوتے ہیں:

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

مزید واضح ہونے کے لئے ، کلائنٹ سائیڈ رینڈرنگ کے ساتھ ، ابتدائی صفحہ کچھ اس طرح نظر آئے گا:


  <سر>
    <اسکرپٹ src = "کلائنٹ کی سائیڈ فریم ورک.js"> 
    <اسکرپٹ src = "app.js"> 
  
  
    <تقسیم کلاس = "کنٹینر"> 
  

app.js میں جاوا اسکرپٹ میں سارے HTML صفحات کے ڈور کے بطور ہوں گے۔ کچھ اس طرح:

var صفحات = {
  '/': ' ... ' ،
  '/ foo': ' ... ' ،
  '/ بار': ' ... ' ،
}؛

پھر ، جب صفحہ بھرا ہوا ہو گا ، فریم ورک یو آر ایل بار کو دیکھے گا ، صفحات پر سٹرنگ حاصل کرے گا ['/'] ، اور اسے

میں داخل کریں گے۔ نیز ، جب آپ لنکس پر کلک کرتے ہیں تو ، فریم ورک واقعہ کو روکتا ہے ، کنٹینر میں نئی ​​سٹرنگ (کہ ، صفحات ['/ foo']) داخل کرے گا ، اور براؤزر کو HTTP کی درخواست کو عام طور پر ختم کرنے سے روک دے گا۔

SEO

فرض کریں کہ ہمارے ویب کرالر نے reddit.com کے لئے درخواست دینا شروع کردی ہے۔

var درخواست = کی ضرورت ('درخواست')؛
درخواست.get ('reddit.com' ، فنکشن (غلطی ، جواب ، جسم) {
  // جسم کچھ اس طرح لگتا ہے:
  // 
  //  ... 
  // 
  //  ESPN 
  //  ہیکر نیوز 
  // ... دوسرے  ٹیگز ...
})؛

اس کے بعد کرالر نئی درخواستیں تخلیق کرنے کے لئے رسپانس باڈی میں چیزیں استعمال کرتا ہے۔

var درخواست = کی ضرورت ('درخواست')؛
درخواست.get ('reddit.com' ، فنکشن (غلطی ، جواب ، جسم) {
  // جسم کچھ اس طرح لگتا ہے:
  // 
  //  ... 
  // 
  //  ESPN 
  //  ہیکر نیوز 
  // ... دوسرے  ٹیگز ...
  درخواست.get ('espn.com'، فنکشن () {...})؛
  درخواست.get ('news.ycombinator.com'، فنکشن () {...})؛
})؛

اس کے بعد ، کرالل espn.com اور نیوز.ycombinator.com پر موجود لنکس کو استعمال کرتے ہوئے رینگتے رہتے ہیں۔

یہ کرنے کے لئے کچھ پنرقیوض کوڈ یہ ہے:

var درخواست = کی ضرورت ('درخواست')؛
فنکشن کرال (url) {
  درخواست.get (یو آر ایل ، فنکشن (غلطی ، جواب ، جسم))
    var linkUrls = getLinkUrls (باڈی)؛
    linkUrls.forEach (فنکشن (linkUrl) {
      کرال یو آر ایل (لنک یو آر ایل)؛
    })؛
  })؛
}
کرالورل ('reddit.com')؛

اگر ردعمل کا ادارہ اس طرح دکھائے گا تو کیا ہوگا:


  <سر>
    <اسکرپٹ src = "کلائنٹ کی سائیڈ فریم ورک.js"> 
    <اسکرپٹ src = "app.js"> 
  
  
    <تقسیم کلاس = "کنٹینر"> 
  

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

کرالر بہت کم جانتا ہے ، کلائنٹ سائیڈ فریم ورک بہت اچھے مواد کے ساتھ << کلاس = "کنٹینر"> بھرنے والا ہے۔

یہی وجہ ہے کہ SEO کے لئے کلائنٹ سائیڈ رینڈرنگ خراب ہوسکتی ہے۔

پیشگی انجام دینا

2009 میں ، گوگل نے اس کے آس پاس جانے کا ایک طریقہ پیش کیا۔

https://webmasters.googleblog.com/2009/10/proposal-for-making-ajax-crawlable.html

جب کرالر www.example.com/page؟query#!mystate پر آجاتا ہے تو ، اسے www.example.com/page؟query&_escaped_fragment_=mystate میں تبدیل کر دیتا ہے۔ اس طرح ، جب آپ کے سرور کو _سیکیپیڈ_فراگمنٹ_ کے ساتھ کوئی درخواست ملتی ہے ، تو یہ جانتا ہے کہ درخواست کسی انسان سے نہیں ، ایک کرالر سے آرہی ہے۔

یاد رکھیں - سرور چاہتا ہے کہ کرول << کلاس = "کنٹینر"> ... (اندر موجود مواد کے ساتھ) دیکھے ،

نہیں۔ تو پھر:

  • جب درخواست کسی کرالر کی طرف سے موصول ہوتی ہے تو ، ہم
    ... کی خدمت کرسکتے ہیں۔
  • جب درخواست کسی باقاعدہ انسان کی طرف سے موصول ہوتی ہے تو ، ہم صرف
    کی خدمت کرسکتے ہیں اور جاوا اسکرپٹ کو اندر داخل کرنے دیں۔

اگرچہ ایک مسئلہ ہے: سرور کو یہ معلوم نہیں ہے کہ

کے اندر جانے والا کیا ہے۔ اندر جانے والی چیزوں کا پتہ لگانے کے لئے ، اس کو جاوا اسکرپٹ چلانا ہوگا ، ایک ڈوم تشکیل دینا ہوگا ، اور اس ڈوم میں ہیرا پھیری کرنا پڑے گا۔ چونکہ روایتی ویب سرورز ایسا کرنے کا طریقہ نہیں جانتے ہیں ، لہذا وہ ایسی خدمت پر ملازمت کرتے ہیں جس کو ایسا کرنے کے لئے ہیڈ لیس براؤزر کہا جاتا ہے۔

ہوشیار کرالر

چھ سال بعد ، گوگل نے اعلان کیا کہ اس کا کرالر برابر ہوگیا! جب کرالر 2.0 ،