Multi-Page Application (MPA) — foydalanuvchi boshqa manzilga o‘tganda server yangi HTML hujjatini qaytaradigan veb-ilova arxitekturasi. Har route mustaqil sahifa sifatida render qilinadi, brauzer esa navigatsiyada joriy hujjatni almashtiradi. Klassik yangilik sayti, katalog, hujjatlar portali va server-render qilingan boshqaruv tizimlari shu modeldan foydalanishi mumkin.
So‘rov va render jarayoni
Havola bosilganda brauzer HTTP so‘rovi yuboradi. Server route, sessiya va ma’lumot asosida template’ni HTML’ga aylantiradi yoki oldindan yaratilgan faylni beradi. Brauzer yangi hujjatni parse qilib, CSS, rasm va scriptlarni yuklaydi. HTTP cache o‘zgarmagan resurslarni qayta yuklash xarajatini kamaytiradi.
Form submission serverga odatiy POST so‘rovi yuborishi mumkin. Muvaffaqiyatdan keyin Post/Redirect/Get usuli refresh paytida amal takrorlanishining oldini oladi. Validation xatosida server forma qiymatlari va xabarlarni qayta render qiladi. JavaScript majburiy bo‘lmagan asosiy oqim progressive enhancement uchun mustahkam asos beradi.
Arxitektura xususiyatlari
Har sahifa serverda tayyor mazmun bilan kelgani uchun birinchi ko‘rinish va crawler tomonidan o‘qish tabiiy. Route darajasida authorization serverning o‘zida bajariladi. Clientdagi global store va murakkab router zarur bo‘lmasligi mumkin. Turli jamoalar yoki texnologiyalar alohida route guruhlarini boshqarishi ham osonlashadi.
To‘liq navigatsiya document state’ni, scroll va ishlayotgan media’ni yo‘qotishi mumkin. Har sahifada umumiy resurslar cache bo‘lmasa ortiqcha transfer yuz beradi. Juda interaktiv dashboard’da serverga tez-tez qaytish sekin his etilishi mumkin. Shu sabab MPA sahifasi ichida fetch, partial update yoki kichik client komponentlari bilan gibrid yondashuv ishlatiladi.
Sessiya va holat
Sahifalar orasidagi holat URL, cookie, server sessiyasi yoki database’da saqlanadi. Muhim workflow faqat browser xotirasidagi yashirin qiymatga tayanmaydi. Query parameter filter va pagination uchun foydali; cookie hajmi cheklangan va har mos so‘rovda serverga yuboriladi. Server sessiyasi bir nechta instance orasida umumiy storage yoki sticky routing talab qilishi mumkin.
CSRF himoyasi cookie bilan autentifikatsiya qilingan state-changing formalar uchun zarur. Output encoding server template’da XSS xavfini kamaytiradi, ammo raw HTML va client script bilan kiritilgan qiymatlar alohida nazorat qilinadi. Har route uchun Content Security Policy va cache siyosati mos bo‘lishi mumkin.
SPA bilan gibridlik
MPA va SPA mutlaq qarama-qarshi emas. Server har route uchun HTML yuborib, ayrim interaktiv “island”larni JavaScript bilan faollashtirishi mumkin. Link prefetch keyingi sahifa resursini oldindan oladi. Turbo yoki partial navigation usullari documentning bir qismini almashtirib, server routingni saqlagan holda tezroq o‘tish beradi.
Tanlov sahifalar soniga emas, interaktivlik, jamoa tajribasi, tarmoq sharoiti va operatsion talabga bog‘liq. Kontentga yo‘naltirilgan, aniq route’li loyiha MPA bilan sodda bo‘lishi mumkin; murakkab real-time ish maydoni ko‘proq client state talab qiladi. Performance har ikkala arxitekturada ham implementatsiyaga bog‘liq.
Frontend resurslarini boshqarish
Har sahifa faqat o‘ziga kerakli script va uslubni yuklasa boshlang‘ich transfer kamayadi, lekin umumiy dependencylar ko‘p bundle’da takrorlanishi mumkin. Shared asset content hash bilan uzoq cache qilinadi, sahifaga xos kod esa entry point sifatida ajratiladi. Server template kerakli stylesheet va module scriptni manifestdan oladi.
Navigation paytida browser yangi document yuklasa ham connection reuse, compression va preload latency’ni kamaytiradi. pageshow va back-forward cache bilan qaytilgan sahifada eski ma’lumot yoki yopilgan sessiya qolishi mumkin. Muhim holat qayta tekshiriladi, ammo har qaytishda cache afzalligini bekor qiladigan to‘liq reload majburlanmaydi.
Bog‘liq tushunchalar
Server-side rendering, Progressive enhancement, Single-Page Application, HTTP navigation, Web architecture, Template engine, Post/Redirect/Get