دستاویزاتفائل کے صفحات کے طریقوں
ISR (باسی-جب کہ-دوبارہ جائز)
تعریف
ISR فی یو آر ایل، ایک صفحے کے HTML کو کیش کرتا ہے، اور اس کی ونڈو کی میعاد ختم ہونے تک اسے پیش کرتا ہے۔ میعاد ختم ہونے والی کاپی اب بھی پیش کی جاتی ہے جب کہ ایک نئی کاپی پس منظر میں پیش کی جاتی ہے: وہ ہے Stale-while-Revalidate۔
یہ کیسے کام کرتا ہے۔
ایک .nexy صفحہ کے فرنٹ میٹر میں revalidate = N اسے آن کر دیتا ہے۔ N سیکنڈ کا ایک عدد ہے۔ ایک غائب، صفر یا منفی قدر کا مطلب ہے کہ کوئی کیش بالکل نہیں ہے۔
کیشے کی کلید صرف درخواست کا راستہ ہے - request.scope["path"]۔ استفسار کی تار اس کا حصہ نہیں ہے۔
| کیا | قدر |
|---|---|
| چابی | URL کا راستہ (/blog/hello) |
| ذخیرہ | میموری میں، اس عمل میں جو صفحہ کو رینڈر کرتا ہے۔ |
| پابند | فی عمل 256 اندراجات، کم از کم حال ہی میں استعمال شدہ بے دخل |
| رسپانس ہیڈر | cache-control: public, s-maxage=N, stale-while-revalidate=N |
رینڈرنگ لائف سائیکل
- ایک ایسے صفحہ کے لیے درخواست آتی ہے جو اعلان کرتا ہے۔
revalidate۔ - ابھی تک کوئی اندراج نہیں: صفحہ پیش کیا گیا، ذخیرہ کیا گیا اور واپس کر دیا گیا۔
Nسیکنڈ سے چھوٹی اندراج: جیسا ہے واپس کیا گیا، صفحہ پیش نہیں کیا گیا ہے۔Nسیکنڈ سے زیادہ پرانا اندراج: باسی اندراج کو فوری طور پر واپس کر دیا جاتا ہے، اور پس منظر کا کام ایک تازہ پیش کرتا ہے۔- اگر وہ بیک گراؤنڈ رینڈر اٹھتا ہے تو، باسی اندراج برقرار رہتا ہے اور اگلی باسی درخواست دوبارہ کوشش کرتی ہے۔
کب استعمال کرنا ہے۔
- ہر آنے والے کے لیے ایک ہی HTML: ایک بلاگ پوسٹ، ایک پروڈکٹ کا صفحہ، ایک دستاویزی صفحہ۔
- صفحہ اکثر پڑھا جاتا ہے اور شاذ و نادر ہی تبدیل ہوتا ہے۔
- ڈیٹا چند سیکنڈ پرانا ہو سکتا ہے بغیر کسی کے نوٹس کئے۔
کنفیگریشن
revalidate = 60<h1>Rendered at most once per minute</h1>N ایک سادہ عدد ہے۔ کسی اور جگہ کوئی فی روٹ اوور رائڈ نہیں ہے، اور .py ہینڈلرز صفحات نہیں ہیں: وہ کبھی بھی اس کیش میں داخل نہیں ہوتے ہیں۔
مثال
ایک بلاگ پوسٹ جو ڈیٹا بیس کو پڑھتی ہے:
revalidate = 300slug: prop[str] = "untitled"posts = {"hello": {"title": "Hello"}, "other": {"title": "Other"}}post = posts.get(slug, {"title": "Untitled"})<h1>{{ post.title }}</h1>پہلی درخواست /blog/hello رینڈرز اور اسٹورز۔ اگلے 300 سیکنڈ میموری سے پیش کیے جاتے ہیں۔ /blog/other ایک الگ اندراج ہے، جو اپنے طور پر پیش اور ذخیرہ کیا گیا ہے۔ ایک حقیقی پروجیکٹ میں posts ڈیٹا بیس یا سروس سے آتا ہے، جسے ایک بار فی تخلیق نو کہا جاتا ہے۔
حدود
Nexy ضمانت دیتا ہے کہ کیش کلید راستہ ہے، باسی کاپی تخلیق نو کے دوران پیش کی جاتی ہے، اور اسٹور باؤنڈڈ اور تھریڈ سے محفوظ ہے۔
کنونشن کے مطابق، ایک صفحہ جو اعلان کرتا ہے کہ revalidate عوامی مواد ہے۔ اسے اس طرح لکھیں جیسے ہر آنے والا ایک ہی HTML دیکھتا ہے۔
آپ کی درخواست باقی تمام چیزوں کے لیے ذمہ دار ہے:
| حد | اس کا کیا مطلب ہے۔ |
|---|---|
| استفسار کی تار کو نظر انداز کر دیا گیا۔ | /search?q=a اور /search?q=b ایک اندراج کا اشتراک کرتے ہیں۔ تلاش کے صفحے کو کیش نہ کریں۔ |
| سیشن الگ تھلگ نہیں ہے۔ | جواب میں کہا گیا ہے public، اور پہلے وزیٹر کا HTML سب کو پیش کیا جاتا ہے۔ revalidate کے ساتھ صفحہ میں سیشن کو کبھی نہ پڑھیں۔ |
| سرور کی طرف سے کوئی باطل نہیں۔ | ونڈو کے ختم ہونے سے پہلے کوئی بھی چیز اندراج کو صاف نہیں کرتی ہے۔ revalidate(...) ایک ایکشن کے اندر صرف براؤزر کو راستہ دوبارہ لوڈ کرنے کے لیے کہتا ہے۔ یہ اس کیشے کو نہیں چھوتا ہے۔ |
| ایک کیشے فی عمل | کئی کارکن مختلف مواد کے ساتھ کئی کیش رکھتے ہیں۔ |
| بیک وقت تخلیق نو | کچھ بھی ان کی نقل نہیں کرتا: دس باسی درخواستیں دس رینڈرز شروع کر سکتی ہیں۔ |
| غلطیاں خاموش ہیں۔ | ایک ناکام تخلیق نو پرانے صفحہ کی خدمت کرتی رہتی ہے۔ ناکامی لاگ ان ہے، واپس نہیں. |