Static file — server foydalanuvchi so‘rovi vaqtida mazmunini dinamik yaratmasdan, saqlangan baytlar ko‘rinishida uzatadigan fayldir. Veb-ilovada CSS, JavaScript, shrift, ikon, rasm va yuklab olinadigan hujjatlar static file bo‘lishi mumkin. “Static” fayl hech qachon o‘zgarmaydi degani emas; yangi release paytida yangilanadi, lekin har request uchun template yoki database natijasidan qayta hisoblanmaydi.
Yetkazish qatlami
Development server static fayllarni qulaylik uchun bevosita berishi mumkin. Productionda ular ko‘pincha Nginx, object storage yoki CDN orqali tarqatiladi. Bu qatlam katta fayl uzatish, range request, compression va cache headerlarni application workerga qaraganda samaraliroq boshqaradi.
URL faylning diskdagi real yo‘li bilan aynan bir xil bo‘lishi shart emas. Build yoki collect jarayoni turli package va ilovalardagi aktivlarni bitta output katalogga yig‘adi. Web server URL prefiksini shu katalogga bog‘laydi.
Cache busting
Brauzer static aktivni uzoq muddat keshda saqlasa, serverdagi fayl yangilangandan keyin ham eski nusxa ko‘rinishi mumkin. Content hash fayl nomiga qo‘shiladi:
app.4f39c2a1.js
Mazmun o‘zgarsa hash va URL ham o‘zgaradi. Bunday immutable aktivlarga uzoq max-age berish mumkin. HTML yangi hashli URLni ko‘rsatgani uchun eski va yangi versiya aralashmaydi. Faqat app.js nomi saqlansa, qisqaroq cache yoki revalidation kerak.
HTTP xususiyatlari
Content-Type brauzerga fayl formatini bildiradi. Noto‘g‘ri MIME type skript yoki shriftning bloklanishiga olib kelishi mumkin. Content-Length hajmni, ETag va Last-Modified esa shartli so‘rov orqali fayl o‘zgarmaganini tekshirishga yordam beradi. Range katta media faylining bir qismini olish imkonini beradi.
Brotli yoki gzip matnli CSS, JS va SVG hajmini kamaytiradi. JPEG yoki video kabi allaqachon siqilgan formatni qayta siqish katta foyda bermaydi. Precompressed variantlar build vaqtida yaratilishi mumkin.
Xavfsizlik
Static katalog ichida .env, backup, source map yoki maxfiy konfiguratsiya qolsa, web server uni o‘zgartirmasdan ommaga berishi mumkin. Allowlistga asoslangan build faqat kerakli aktivlarni outputga chiqaradi. Directory listing o‘chirilsa ham, ma’lum URLdagi maxfiy fayl himoyalangan bo‘lib qolmaydi.
Foydalanuvchi yuklagan fayl static aktivdan alohida boshqariladi. Unga tasodifiy nom, ruxsat, malware tekshiruvi va xavfsiz Content-Disposition kerak bo‘lishi mumkin. HTML yoki SVGni bir xil origin ostida to‘g‘ridan-to‘g‘ri berish active content xavfini keltiradi.
Same-origin va CORS
Shrift, JavaScript module yoki canvasda ishlatiladigan rasm boshqa origindan yuklansa, brauzer CORS sarlavhalarini tekshirishi mumkin. CDN Access-Control-Allow-Originni aktiv turiga va foydalanish holatiga mos qaytaradi. Noto‘g‘ri * hamma resurs uchun xavfsiz degani emas, ayniqsa credential bilan so‘rovda u cheklangan. crossorigin atributi va cache key birga hisobga olinmasa, bir client uchun CORSsiz keshlangan javob boshqasida xato berishi mumkin.
Build manbasi va source map
Source map minified JavaScriptni asl kod satriga bog‘lab debuggingni osonlashtiradi. Public source map ichki manba, izoh yoki yo‘l nomlarini oshkor qilishi mumkin. Uni faqat error monitoring xizmatiga yuklash yoki public aktivdan ajratish mumkin. Build manifest original logical nomni hashli faylga bog‘laydi. Deployda HTML va manifest yangi aktivlardan oldin chiqsa, qisqa vaqt mavjud bo‘lmagan URLga murojaat yuz beradi; publish tartibi yoki eski aktivlarni saqlash buni oldini oladi.
Bog‘liq tushunchalar
CDN, cache control, MIME type, ETag, content hash, web server, object storage