الوثائقالأمن والنشر
الأداء
ما يفعله nx start افتراضيًا، وما الذي يجب تشغيله، وما الذي تم قياسه.
الافتراضيات
| قلق | الافتراضي | تغييره |
|---|---|---|
| العمليات | عامل Uvicorn واحد لكل وحدة معالجة مركزية على Linux وmacOS، وعامل واحد على Windows | nx start يقوم بتشغيل التطبيق من خلال Uvicorn |
| ضغط | خارج | useGZip = {"minimum_size": 1000} في التكوين، أو الضغط على الوكيل العكسي |
| الملفات الثابتة | خدم ب ETag و Last-Modified، لا Cache-Control |
قم بتعيين التخزين المؤقت طويل الأمد على الوكيل العكسي أو CDN للحزم المجزأة |
| صفحات HTML | المقدمة لكل طلب، لا ذاكرة التخزين المؤقت | ISR مع revalidate = N |
| مستندات API | على | useDocs = False في الإنتاج |
| عقدة في وقت التشغيل | لا شيء | nx build يتم عرض مكونات العميل مسبقًا |
مفتاحا الجدول في nexyconfig.py، وISR في صفحة:
from nexy.core.models import NexyConfigModel class NexyConfig(NexyConfigModel): useGZip = {"minimum_size": 1000} useDocs = Falserevalidate = 60<h1>Rendered at most once per minute</h1>ISR هو وضع لصفحات الملفات: يتم عرض العرض الذي ترجعه وحدة التحكم عند كل طلب.
قياس
تشغيل محلي، عامل Uvicorn واحد، Windows، Python 3.13، اتصالات مستمرة من مولد تحميل Python على نفس الجهاز. تعامل مع الأرقام كخط أساس لمقارنة التغييرات، وليس كمعيار مقابل الأطر الأخرى.
مسار Nexy JSON للجدول هو هذا الملف:
async def GET(): return {"ok": True}from nexy.decorators import Controller @Controller("/api/ping")class PingController: async def get(self): return {"ok": True}تم قياس الأرقام أدناه باستخدام مسار الملف. قم بقياس وحدة التحكم بنفس الطريقة قبل الاعتماد عليها.
| الطريق | التزامن | طلبات في الثانية الواحدة | ص50 | ص99 |
|---|---|---|---|---|
| طريق JSON العاري FastAPI | 16 | ~ 4500 | 3.4 مللي ثانية | 5.1 مللي ثانية |
مسار Nexy JSON (src/routes/api/ping.py) |
16 | ~ 2900 | 5.2 مللي ثانية | 9.8 مللي ثانية |
| صفحة Nexy SSR (16 كيلوبايت، 16 مكونًا) | 1 | ~500 | 1.9 مللي ثانية | 3.0 مللي ثانية |
| صفحة Nexy SSR (16 كيلوبايت، 16 مكونًا) | 64 | ~670 | 94 مللي ثانية | 126 مللي ثانية |
قراءة الجدول:
- تكلف طبقات Nexy الخاصة (سياق المسار والبرمجيات الوسيطة) حوالي ثلث إنتاجية المسار المجرد FastAPI.
- تكلف الصفحة المعروضة بواسطة الخادم حوالي 2 مللي ثانية من وحدة المعالجة المركزية، موزعة على ما يقرب من 16 نموذج عرض (واحد لكل مكون). الصفحات التي تحتوي على مكونات أقل تكون أرخص نسبيًا.
- موازين الإنتاجية مع العمال. في Linux،
nx startيبدأ بالفعل تشغيل واحد لكل وحدة معالجة مركزية.
نصيحة عملية
- ضع Nginx، Caddy أو حافة النظام الأساسي الخاص بك في المقدمة: TLS، HTTP/2، Brotli والتخزين المؤقت طويل الأمد لأصول
/__nexy__/client/هي نقاط قوتهم. انظر نشر. - استخدم ISR للصفحات التي تتغير أقل من مرة واحدة في الدقيقة.
- قم بالترطيب بتكاسل باستخدام الجزر بحيث يتم شحن الحمولة الأولى بشكل أقل JavaScript.
- اجعل عدد
.nexyمن المكونات في كل صفحة معقولًا: كل واحد منها عبارة عن عرض قالب منفصل. - قياس الطرق الخاصة بك. يعد مولد التحميل المحلي الذي يحافظ على الاتصالات حية كافيًا لمقارنة نسختين من الصفحة.
نصيحة 1 مع Nginx: يتم تخزين حزم العميل المجزأة مؤقتًا لمدة عام، ويذهب الباقي إلى Nexy.
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; }}