ডকুমেন্টেশননিরাপত্তা এবং স্থাপনা

কর্মক্ষমতা

ডিফল্টরূপে nx start কী করে, কী চালু করতে হবে এবং কী পরিমাপ করা হয়েছিল।

ডিফল্ট

উদ্বেগ ডিফল্ট এটি পরিবর্তন করুন
প্রসেস লিনাক্স এবং ম্যাকওএস-এ সিপিইউ প্রতি একজন Uvicorn কর্মী, উইন্ডোজে একজন nx start অ্যাপটি Uvicorn এর মাধ্যমে চালায়
কম্প্রেশন বন্ধ কনফিগ-এ useGZip = {"minimum_size": 1000}, অথবা বিপরীত প্রক্সিতে কম্প্রেস করুন
স্ট্যাটিক ফাইল ETag এবং Last-Modified এর সাথে পরিবেশন করা হয়েছে, না Cache-Control হ্যাশড বান্ডিলের জন্য বিপরীত প্রক্সি বা CDN-এ দীর্ঘস্থায়ী ক্যাশিং সেট করুন
এইচটিএমএল পেজ অনুরোধ প্রতি রেন্ডার, কোন ক্যাশে ISR এর সাথে revalidate = N
API ডক্স অন useDocs = False উৎপাদনে
রানটাইমে নোড কোনটি nx build ক্লায়েন্ট উপাদান প্রাক-রেন্ডার করে

টেবিলের দুটি সুইচ nexyconfig.py, এবং একটি পৃষ্ঠায় ISR:

nexyconfig.py
from nexy.core.models import NexyConfigModel  class NexyConfig(NexyConfigModel):    useGZip = {"minimum_size": 1000}    useDocs = False
src/routes/blog/index.nexy
---revalidate = 60---<h1>Rendered at most once per minute</h1>

ISR হল ফাইল পৃষ্ঠাগুলির একটি মোড: প্রতিটি অনুরোধে একটি কন্ট্রোলার রিটার্নের একটি দৃশ্য রেন্ডার করা হয়।

পরিমাপ করা হয়েছে

একটি লোকাল রান, একজন Uvicorn কর্মী, উইন্ডোজ, Python 3.13, একই মেশিনে একটি Python লোড জেনারেটর থেকে জীবিত সংযোগ। পরিবর্তনগুলি তুলনা করার জন্য সংখ্যাগুলিকে একটি বেসলাইন হিসাবে বিবেচনা করুন, অন্যান্য কাঠামোর বিরুদ্ধে একটি বেঞ্চমার্ক হিসাবে নয়।

টেবিলের Nexy JSON রুট হল এই ফাইলটি:

src/routes/api/ping.py
async def GET():    return {"ok": True}
src/apps/ping_controller.py
from nexy.decorators import Controller  @Controller("/api/ping")class PingController:    async def get(self):        return {"ok": True}

নীচের পরিসংখ্যান ফাইল রুট সঙ্গে পরিমাপ করা হয়েছে. আপনি তাদের উপর নির্ভর করার আগে একটি কন্ট্রোলারকে একইভাবে পরিমাপ করুন।

রুট সঙ্গতি প্রতি সেকেন্ডে অনুরোধ p50 p99
বেয়ার FastAPI JSON রুট 16 ~4,500 3.4 ms 5.1 ms
Nexy JSON রুট (src/routes/api/ping.py) 16 ~2,900 5.2 ms 9.8 ms
Nexy SSR পৃষ্ঠা (16 KB, 16 উপাদান) 1 ~500 1.9 ms 3.0 ms
Nexy SSR পৃষ্ঠা (16 KB, 16 উপাদান) 64 ~670 94 ms 126 ms

টেবিল পড়া:

  • নেক্সির নিজস্ব স্তরগুলির (পথের প্রসঙ্গ, মিডলওয়্যার) একটি বেয়ার FastAPI রুটের থ্রুপুটের প্রায় এক তৃতীয়াংশ খরচ হয়।
  • একটি সার্ভার-রেন্ডার করা পৃষ্ঠার জন্য প্রায় 2 এমএস সিপিইউ খরচ হয়, যা প্রায় 16টি টেমপ্লেট রেন্ডার (প্রতি উপাদানে একটি) জুড়ে বিস্তৃত। কম উপাদান সহ পৃষ্ঠাগুলি আনুপাতিকভাবে সস্তা।
  • শ্রমিকদের সাথে থ্রুপুট স্কেল। লিনাক্সে, nx start ইতিমধ্যে প্রতি সিপিইউতে একটি শুরু হয়।

ব্যবহারিক পরামর্শ

  1. Nginx, Caddy বা আপনার প্ল্যাটফর্মের প্রান্তকে সামনে রাখুন: TLS, HTTP/2, Brotli এবং /__nexy__/client/ সম্পদের জন্য দীর্ঘস্থায়ী ক্যাশিং তাদের শক্তি। দেখুন মোতায়েন।
  2. যে পৃষ্ঠাগুলি প্রতি মিনিটে একবারেরও কম পরিবর্তন হয় তাদের জন্য ISR ব্যবহার করুন।
  3. দ্বীপগুলির সাথে অলসভাবে হাইড্রেট করুন তাই প্রথম লোড জাহাজ কম JavaScript।
  4. প্রতি পৃষ্ঠায় .nexy উপাদানের সংখ্যা যুক্তিসঙ্গত রাখুন: প্রতিটি একটি পৃথক টেমপ্লেট রেন্ডার।
  5. আপনার নিজের রুট পরিমাপ. একটি স্থানীয় লোড জেনারেটর যা সংযোগগুলিকে জীবিত রাখে একটি পৃষ্ঠার দুটি সংস্করণ তুলনা করার জন্য যথেষ্ট।

পরামর্শ 1 এর সাথে Nginx: হ্যাশড ক্লায়েন্ট বান্ডেলগুলি এক বছরের জন্য ক্যাশে করা হয়, বাকিটা নেক্সিতে যায়।

/etc/nginx/conf.d/my-app.conf
server {    listen 443 ssl http2;    server_name example.com;     location /__nexy__/client/ {        proxy_pass http://127.0.0.1:3000;        add_header Cache-Control "public, max-age=31536000, immutable";    }     location / {        proxy_pass http://127.0.0.1:3000;        proxy_set_header Host $host;        proxy_set_header X-Forwarded-Proto $scheme;    }}

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

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

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