MPA — foydalanuvchi boshqa route yoki sahifaga o‘tganda serverdan yangi HTML document yuklanadigan web application arxitekturasi. To‘liq nomi Multi-Page Application. Har URL serverda alohida request sifatida qayta ishlanadi va to‘liq page response qaytariladi.
MPA klassik web saytlar, portal, e-commerce, news va server-rendered applicationlarda keng qo‘llanadi.
Request-response
Oddiy navigatsiya oqimi:
- user linkni bosadi;
- browser yangi HTTP request yuboradi;
- server route’ni qayta ishlaydi;
- data olinadi;
- HTML render qilinadi;
- browser yangi documentni yuklaydi.
Oldingi page JavaScript state’i odatda yo‘qoladi.
Server routing
Har URL server route’iga mos keladi.
Masalan:
/products
/products/15
/cart
/account
Server authentication, data va template asosida response yaratadi.
Route bevosita ochilganda alohida frontend fallback talab qilinmaydi.
Template
Server template data’ni HTMLga aylantiradi.
Template engine:
imkoniyatlarini berishi mumkin.
User input default escape qilinishi XSSga qarshi muhim.
Progressive enhancement
MPA asosiy funksiyani HTML form va link bilan ta’minlab, keyin JavaScript bilan yaxshilashi mumkin.
JavaScript ishlamasa ham:
- navigatsiya;
- form submit;
- content;
- authentication
ishlashi ehtimoli yuqori.
Bu accessibility va resilience’ga yordam beradi.
Page reload
Har navigatsiyada yangi document yuklanishi:
- JavaScript contextni tozalaydi;
- memory leakni route bo‘ylab saqlamaydi;
- serverdan yangilangan HTML beradi;
- scroll va UI state’ni qayta tiklash talab qiladi.
Browser cache static assetlarni qayta yuklashni kamaytiradi.
SEO
MPA serverdan to‘liq HTML qaytargani sabab crawler contentni darhol ko‘radi.
Har page:
- title;
- meta description;
- canonical;
- structured data;
- heading;
- link
bilan mustaqil boshqariladi.
SEO avtomatik yaxshi bo‘lmaydi, lekin render dependency kamroq.
Performance
MPA performance’iga:
ta’sir qiladi.
Har page uchun kerakli assetni minimal yuklash mumkin.
To‘liq reloadda document va layout qayta quriladi.
Caching
MPA HTML response’lari:
bilan tezlashtirilishi mumkin.
Personalized response umumiy cache’da boshqa userga chiqib ketmasligi kerak.
Cache key cookie, language va permissionni hisobga oladi.
Form
HTML form serverga GET yoki POST request yuboradi.
Validation serverda bajariladi.
Xato bo‘lsa server formani error bilan qayta render qiladi.
Post/Redirect/Get pattern refreshda form qayta yuborilishini kamaytiradi.
Session
MPA ko‘pincha cookie-based server session bilan ishlaydi.
Server session user identity va state’ning bir qismini saqlaydi.
Cookie Secure, HttpOnly va SameSite bilan himoyalanishi mumkin.
CSRF state-changing formalar uchun hisobga olinadi.
JavaScript
MPA JavaScriptsiz bo‘lishi shart emas.
Har page:
- interactive widget;
- AJAX form;
- modal;
- client validation;
- chart;
- partial update
ishlatishi mumkin.
Katta sahifa ichida SPAga o‘xshash “island”lar mavjud bo‘lishi mumkin.
Partial navigation
Modern MPA ayrim navigatsiyada faqat page fragmentini yangilashi mumkin.
Framework yoki browserga yaqin texnologiya HTMLni serverdan olib, to‘liq reloadsiz DOMni almashtiradi.
Bu MPA va SPA orasidagi hybrid yondashuv.
Architecture soddaligi
Har request mustaqil bo‘lgani sabab frontend global state va client router kamroq bo‘lishi mumkin.
Server log va error monitoring markaziy.
Ammo juda interaktiv desktopga o‘xshash ilova uchun ko‘p reload noqulay bo‘lishi mumkin.
MPA va SPA
MPA:
SPA:
- client routing;
- yumshoq navigatsiya;
- ko‘proq JavaScript;
- murakkab client state.
Tanlov application vazifasiga bog‘liq.
MPA va SSR
MPA odatda server-side renderingdan foydalanadi.
Lekin SSR atamasi SPA frameworkining dastlabki yoki route HTMLini serverda render qilishi uchun ham ishlatiladi.
Har server-rendered sahifa albatta klassik MPA emas.
Deployment
Frontend template va backend ko‘pincha bir release’da deploy qilinadi.
Bu API version mismatchni kamaytiradi.
Mustaqil frontend jamoalari va ko‘p client bo‘lsa API-based architecture ko‘proq mos bo‘lishi mumkin.
Redirect
Server-side form muvaffaqiyatli bajarilgach redirect ishlatilishi mumkin. Bu browser refresh qilganda POST requestni qayta yuborish xavfini kamaytiradi. Redirect statusi methodni saqlash yoki GETga o‘tish semantikasiga qarab tanlanadi.
Fragment component
MPA template’lari ham reusable component va partiallarga bo‘linadi. Header, card, form field va pagination bitta joyda saqlanadi. Server componentlari page reload modelini o‘zgartirmaydi, faqat markupni takrorlamaslik va design consistency uchun xizmat qiladi.
Error sahifasi
Server 404, 403 va 500 holatlari uchun alohida HTML qaytaradi. Production xato sahifasi stack trace bermaydi, lekin userga navigatsiya va correlation ID ko‘rsatishi mumkin.
Asset versioni
HTML yangi CSS va JavaScript fayllariga content hash bilan murojaat qiladi. Static assetlar uzoq cache qilinadi, HTML esa tezroq yangilanadi. Eski HTMLga kerakli asset deploymentdan darhol o‘chirilmaydi.
Internationalization
Har til uchun URL, template va metadata serverda yaratilishi mumkin. Language tanlovi cookie, path yoki domain orqali boshqariladi.
Browser cache
Static assetlar cache’dan olinsa har page reload barcha resursni qayta yuklamaydi. HTML yangiligi esa qisqaroq cache policy bilan boshqariladi.
Bog‘liq tushunchalar
Multi-Page Application, Server-side rendering, HTML form, Progressive enhancement, Template engine, SPA, HTTP request, Session, CDN, Web architecture