ডকুমেন্টেশনফাইল পৃষ্ঠার মোড

আইএসআর (স্টেল-হোয়াইল-রিভালিডেট)

সংজ্ঞা

আইএসআর ইউআরএল প্রতি একটি পৃষ্ঠার এইচটিএমএল ক্যাশ করে এবং এটির উইন্ডোর মেয়াদ শেষ না হওয়া পর্যন্ত এটি পরিবেশন করে। মেয়াদোত্তীর্ণ অনুলিপিটি এখনও পরিবেশন করা হয় যখন একটি নতুন পটভূমিতে রেন্ডার করা হয়: সেটি হল stale-while-revalidate।

এটা কিভাবে কাজ করে

revalidate = N একটি .nexy পৃষ্ঠার ফ্রন্ট ম্যাটারে এটি চালু করে। N সেকেন্ডের সংখ্যা; একটি অনুপস্থিত, শূন্য বা ঋণাত্মক মান মানে কোনো ক্যাশে নেই।

ক্যাশে কী হল শুধুমাত্র রিকোয়েস্ট পাথ - request.scope["path"]। ক্যোয়ারী স্ট্রিং এর অংশ নয়।

কি মান
কী URL পাথ (/blog/hello)
মেমরিতে স্টোরেজ এই প্রক্রিয়ায় যা পৃষ্ঠাটিকে রেন্ডার করে
আবদ্ধ প্রতি প্রক্রিয়ায় 256টি এন্ট্রি, অন্তত সম্প্রতি ব্যবহার করা উচ্ছেদ
প্রতিক্রিয়া শিরোনাম cache-control: public, s-maxage=N, stale-while-revalidate=N

জীবনচক্র রেন্ডারিং

  1. একটি পৃষ্ঠার জন্য একটি অনুরোধ আসে যা ঘোষণা করে revalidate।
  2. এখনও কোন এন্ট্রি নেই: পৃষ্ঠাটি রেন্ডার করা হয়েছে, সংরক্ষণ করা হয়েছে এবং ফেরত দেওয়া হয়েছে।
  3. N সেকেন্ডের চেয়ে ছোট এন্ট্রি: যেমন আছে ফিরে এসেছে, পৃষ্ঠাটি রেন্ডার করা হয়নি।
  4. N সেকেন্ডের চেয়ে পুরানো এন্ট্রি: স্টেল এন্ট্রি অবিলম্বে ফেরত দেওয়া হয়, এবং একটি পটভূমি কাজ একটি নতুন একটি রেন্ডার করে।
  5. যদি সেই ব্যাকগ্রাউন্ড রেন্ডার উত্থাপিত হয়, তবে স্থির এন্ট্রিটি থেকে যায় এবং পরবর্তী বাসি অনুরোধটি আবার চেষ্টা করে।

কখন ব্যবহার করতে হবে

  • প্রত্যেক দর্শকের জন্য একই HTML: একটি ব্লগ পোস্ট, একটি পণ্য পৃষ্ঠা, একটি ডকুমেন্টেশন পৃষ্ঠা৷
  • পৃষ্ঠাটি প্রায়ই পড়া হয় এবং খুব কমই পরিবর্তিত হয়।
  • কেউ খেয়াল না করেই ডেটা কয়েক সেকেন্ড পুরানো হতে পারে।

কনফিগারেশন

src/routes/blog/index.nexy
---revalidate = 60---<h1>Rendered at most once per minute</h1>

N একটি সরল পূর্ণসংখ্যা। অন্য কোথাও কোন প্রতি-রুট ওভাররাইড নেই, এবং .py হ্যান্ডলাররা পৃষ্ঠা নয়: তারা কখনই এই ক্যাশে প্রবেশ করে না।

উদাহরণ

একটি ব্লগ পোস্ট যা একটি ডাটাবেস পড়ে:

src/routes/blog/[slug].nexy
---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, এবং প্রথম দর্শকের এইচটিএমএল সবার কাছে পরিবেশন করা হয়। revalidate সহ একটি পৃষ্ঠায় অধিবেশন পড়ুন না.
কোন সার্ভার-সাইড অবৈধকরণ উইন্ডো শেষ হওয়ার আগে কোনো এন্ট্রি পরিষ্কার করে না। revalidate(...) একটি অ্যাকশন এর ভিতরে শুধুমাত্র ব্রাউজারকে একটি পথ পুনরায় লোড করতে বলে; এটা এই ক্যাশে স্পর্শ না.
প্রতি প্রক্রিয়ায় একটি ক্যাশে বেশ কিছু কর্মী বিভিন্ন বিষয়বস্তু সহ বেশ কয়েকটি ক্যাশে রাখে।
সমসাময়িক পুনর্জন্ম কিছুই তাদের অনুলিপি করে না: দশটি বাসি অনুরোধ দশটি রেন্ডার শুরু করতে পারে।
ত্রুটিগুলি নীরব একটি ব্যর্থ পুনর্জন্ম পুরানো পাতা পরিবেশন করে; ব্যর্থতা লগ করা হয়, ফিরে না.

পরবর্তী পদক্ষেপ

GitHub-এ সম্পাদনা করুন

Enter ফলাফল খোলে, Esc বন্ধ করে।