दस्तावेज़सुरक्षा एवं तैनाती
प्रदर्शन
nx start डिफ़ॉल्ट रूप से क्या करता है, क्या स्विच ऑन करना है, और क्या मापा गया था।
डिफ़ॉल्ट
| चिंता | डिफ़ॉल्ट | इसे बदलो |
|---|---|---|
| प्रक्रियाएँ | लिनक्स और मैकओएस पर प्रति सीपीयू एक Uvicorn कार्यकर्ता, विंडोज़ पर एक | nx start ऐप को Uvicorn के माध्यम से चलाता है |
| संपीड़न | बंद | useGZip = {"minimum_size": 1000} कॉन्फिग में, या रिवर्स प्रॉक्सी पर संपीड़ित करें |
| स्थैतिक फ़ाइलें | ETag और Last-Modified के साथ सेवा की, नहीं Cache-Control |
हैशेड बंडलों के लिए रिवर्स प्रॉक्सी या सीडीएन पर लंबे समय तक चलने वाली कैशिंग सेट करें |
| HTML पृष्ठ | प्रति अनुरोध प्रस्तुत किया गया, कोई कैश नहीं | आईएसआर के साथ revalidate = N |
| एपीआई दस्तावेज़ | पर | useDocs = False उत्पादन में |
| रनटाइम पर नोड | कोई नहीं | nx build क्लाइंट घटकों को प्री-रेंडर करता है |
nexyconfig.py में तालिका के दो स्विच, और एक पृष्ठ में आईएसआर:
from nexy.core.models import NexyConfigModel class NexyConfig(NexyConfigModel): useGZip = {"minimum_size": 1000} useDocs = Falserevalidate = 60<h1>Rendered at most once per minute</h1>आईएसआर फ़ाइल पृष्ठों का एक तरीका है: प्रत्येक अनुरोध पर एक नियंत्रक रिटर्न प्रदान किया जाता है।
नापा गया
एक स्थानीय रन, एक Uvicorn कार्यकर्ता, विंडोज़, Python 3.13, एक ही मशीन पर Python लोड जनरेटर से सक्रिय कनेक्शन। परिवर्तनों की तुलना के लिए संख्याओं को आधार रेखा के रूप में मानें, न कि अन्य ढाँचों के विरुद्ध बेंचमार्क के रूप में।
तालिका का नेक्सी JSON मार्ग यह फ़ाइल है:
async def GET(): return {"ok": True}from nexy.decorators import Controller @Controller("/api/ping")class PingController: async def get(self): return {"ok": True}नीचे दिए गए आंकड़े फ़ाइल रूट से मापे गए थे। किसी नियंत्रक पर भरोसा करने से पहले उसी तरह उसे मापें।
| मार्ग | समवर्ती | प्रति सेकंड अनुरोध | p50 | पी99 |
|---|---|---|---|---|
| नंगे FastAPI JSON मार्ग | 16 | ~4,500 | 3.4 एमएस | 5.1 एमएस |
नेक्सी JSON मार्ग (src/routes/api/ping.py) |
16 | ~2,900 | 5.2 एमएस | 9.8 एमएस |
| नेक्सी एसएसआर पेज (16 केबी, 16 घटक) | 1 | ~500 | 1.9 एमएस | 3.0 एमएस |
| नेक्सी एसएसआर पेज (16 केबी, 16 घटक) | 64 | ~670 | 94 एमएस | 126 एमएस |
तालिका पढ़ना:
- नेक्सी की अपनी परतों (पथ संदर्भ, मिडलवेयर) की लागत नंगे FastAPI मार्ग के थ्रूपुट का लगभग एक तिहाई है।
- एक सर्वर-रेंडर पेज की लागत लगभग 2 एमएस सीपीयू होती है, जो लगभग 16 टेम्पलेट रेंडर (प्रति घटक एक) में फैली होती है। कम घटकों वाले पृष्ठ आनुपातिक रूप से सस्ते होते हैं।
- श्रमिकों के साथ थ्रूपुट स्केल। लिनक्स पर,
nx startपहले से ही प्रति सीपीयू एक शुरू करता है।
व्यावहारिक सलाह
- Nginx, Caddy या अपने प्लेटफ़ॉर्म के किनारे को सामने रखें: टीएलएस, HTTP/2, ब्रॉटली और
/__nexy__/client/संपत्तियों के लिए लंबे समय तक चलने वाली कैशिंग उनकी ताकत हैं। तैनाती देखें। - उन पृष्ठों के लिए ISR का उपयोग करें जो एक मिनट में एक बार से कम बदलते हैं।
- द्वीपों के साथ आराम से हाइड्रेट करें ताकि पहले लोड जहाज कम हों JavaScript।
- प्रति पृष्ठ
.nexyघटकों की संख्या उचित रखें: प्रत्येक एक अलग टेम्पलेट रेंडर है। - अपने स्वयं के मार्ग मापें. एक स्थानीय लोड जनरेटर जो कनेक्शन को जीवित रखता है, एक पृष्ठ के दो संस्करणों की तुलना करने के लिए पर्याप्त है।
Nginx के साथ सलाह 1: हैश किए गए क्लाइंट बंडलों को एक वर्ष के लिए कैश किया जाता है, बाकी नेक्सी को जाता है।
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; }}