Bu site bizim teknik spesifikasyonumuzdur — bize avantaj sağlamayan ölçümler de dahil.
Sunucu tarafında işlenen siteler kuruyoruz; AVIF ve WebP görselleriyle, dışarıdan doğrulanan güvenlik başlıklarıyla, verilerden üretilen site haritasıyla ve her yayından sonra çalıştırılan bir kabul kontrolüyle. Hepsi, okuduğunuz sayfada incelenebilir.
Zaten kurduklarımızBir müşteri sitesini onun izni olmadan alıntılayamayız, ama buna ihtiyacımız yok: kanıt zaten bu sayfanın kendisi. Next.js 16.2.4 ve React 19.1.0 ile çalışıyor, önceden işlenmiş olarak cache’den sunuluyor (`x-nextjs-prerender: 1`, `x-nextjs-cache: HIT`), `preload`, `nosniff`, `SAMEORIGIN`, `Referrer-Policy` ve tam bir içerik politikasıyla HSTS taşıyor — 06.09.2026 tarihinde `curl -I` ile doğrulandı. Site haritası 147 adres içeriyor; hepsi veriden üretilmiş, elle yazılmamış. Aynı depoda ikinci uygulama: form altyapısı — append-only günlük, herkese açık sağlık sondası, hız sınırlama — ve yayımdan sonra çalıştırılan kabul betiği.
Tanıtım sitesi için tek dürüst test şudur: Şirketin onun hakkında söylediğini dışarıdan doğrulayabiliyor musunuz? Bu yüzden bu sayfa teknolojileri değil, tek bir komutla kendi başınıza kontrol edebileceğiniz şeyleri listeler. Site Next.js 16.2.4 ve React 19.1.0 çalıştırır; sayfalar derleme sırasında önceden oluşturulur ve cache’den servis edilir — bu, yanıt başlıklarında görülür: `x-nextjs-prerender: 1`, `x-nextjs-cache: HIT`, `s-maxage=31536000`, eski bir sayfanın yenilenirken hâlâ servis edilebildiği 300 saniyelik bir pencereyle birlikte.
Sunucu tarafında oluşturma, bir mimari tercihi değildir. Zayıf bağlantılı bir ziyaretçi ve bir arama motoru, JavaScript beklemeden aynı tam HTML’i alır. Bunun üstüne kaynak disiplini gelir: görseller AVIF ve WebP olarak çıkar, bir yıllık önbellekle; yazı tipleri bizim tarafımızda barındırılır, harici bir hizmetten istenmez; sekiz arayüz kütüphanesinin içe aktarımları, tek bir simge için tüm modülleri çekmemek üzere optimize edilmiştir.
Güvenlik başlıkları iki yerden gönderilir ve yalnızca yapılandırmada değil, gerçek yanıtta da doğrulanır: alt alan adları ve ön yükleme listesine kayıt ile iki yıl zorunlu güvenli aktarım, dosya türü tahmininin engellenmesi, yabancı çerçevelere yerleştirme kısıtlaması, yönlendiren politikası ve kamerayı kapatan, mikrofonu yalnızca kendi kaynağına bırakan bir izinler politikası — çünkü sesli demolar buna ihtiyaç duyar ve bu istisna olmadan tarayıcı sessizce reddeder.
Son kısım bizi ayıran kısımdır ve nahoştur: bizde kötü ölçtüklerimizi de yayımlıyoruz. Sunucu hâlâ Brotli ve HTTP/2 sunmuyor. Çeviri kataloğu her gezinmede iletiliyor ve her seferinde yaklaşık 70 KB sıkıştırılmış maliyet oluşturuyor. 443 KB’lık bir paket dört dil kataloğu içeriyor; bunlardan yalnızca biri yönlendirilebilir. Yazı tipleri, doğrulanan sayfalarda hiçbir Kiril karakteri olmamasına rağmen Kiril alt kümesini de getiriyor. Bu sayılar ölçülmüş, depoya yazılmış ve düzeltme listesine eklenmiştir. Kendi sitesi hakkında böyle sayıları olmayan bir sağlayıcı ya ölçmemiştir ya da söylemek istemiyordur.
Neleri kapsıyor
Çalışma, bileşenlerine ayrılmış hâliyle
Sunucu tarafında oluşturma, önbellekten sunuluyor
Sayfalar yapım sırasında önceden oluşturulur ve tarayıcıda değil, tam HTML olarak teslim edilir. Gerçek yanıtta `x-nextjs-prerender: 1` ve `x-nextjs-cache: HIT` görünür; `cache-control: s-maxage=31536000` ve eski sürümün yenilenme sırasında 300 saniye daha sunulabildiği bir pencereyle birlikte. Pratik etki: zayıf bağlantılı bir ziyaretçi ve bir tarayıcı aynı içerği, aynı istekte alır.
Bütçeli görseller ve yazı tipleri, şansla değil
Yapılandırılan biçimler AVIF ve WebP’dir; statik dosyalar, görseller ve yazı tipleri için `immutable` başlığıyla birlikte 31.536.000 saniyelik — bir yıllık — asgari önbellek süresi vardır. Yazı tipleri yapı sırasında bizim tarafımızda barındırılır, her ziyarette harici bir hizmetten istenmez ve `swap` ile gösterilir; böylece yazı tipi indirilmeden önce metin görünsün. Kaynağın, birinin grafik editöründen dışa aktardığı şeye bağlı olmaması için WebP için kalite 80 ve AVIF için 75 ile toplu sıkıştırma betiği de vardır.
Güvenlik başlıkları iki yerden gönderilir ve yanıtta doğrulanır
Uygulamadan: alt alan adları ve ön yükleme listesine kayıt ile 63.072.000 saniye zorunlu güvenli aktarım, `X-Content-Type-Options: nosniff`, `X-Frame-Options: SAMEORIGIN`, `Referrer-Policy: strict-origin-when-cross-origin` ve kamerayı kapatan, mikrofonu yalnızca kendi kaynağına bırakan, ilgi gruplamasını devre dışı bırakan bir izinler politikası. Web sunucusundan, ayrı olarak: izin verilen kaynakların açık listesiyle tam bir içerik güvenliği politikası. Teslimatta bunun iki yer olduğu açıkça yazılır — yoksa bir sonraki değişiklik yapan kişi yanlış yeri arar.
Elle yazılmamış, veriden üretilmiş site haritası
Site haritası beş kaynaktan oluşturulur — 13 sabit adres, makaleler, 19 ürün, 12 hizmet ve 100 hizmet × alan kombinasyonu — ve son bir deduplikasyondan geçer. Sonuç: hem kodda hem de üretimde sunulan dosyada sayılan 147 adres. Yeni bir sayfa otomatik olarak girer; silinen biri kaybolur. Kimse üç haftada senkronu bozulan paralel bir listeyi elle tutmaz.
Eski adresler ölmez: 43 kalıcı yönlendirme
Bir yapı temizliği, birinin kaydettiği ya da yayımladığı adresleri geride bırakır. Yapılandırmada 43 kalıcı yönlendirme vardır — bloga giden 9 rehber, 20 yetim makale, yeniden eşlenmiş 6 vaka çalışması ve 8 tekil sayfa. Uygulama içinden yönlendiren 11 sayfa da vardır; işlevsel olarak doğrudur, ancak bir yapılandırma kuralından daha pahalıdır ve düzeltme listesinde bu şekilde yer alır.
Form bir altyapıdır, süs değil
İstek, teslim edilmeye çalışılmadan önce append-only bir günlüğe yazılır; sonuç için ikinci bir satır vardır; bir lead’in hemen şimdi bir insana ulaşıp ulaşamayacağını söyleyen herkese açık bir sağlık sondası vardır; ve arayüzlere yönelik istekler dakikada 10 ile sınırlandırılır, anahtar yönlendirilmiş adres başlığının son sıçramasından alınır, ilkinden değil — ilki istemci tarafından gönderilir. Nedenler ayrı belgede değil, kodda yazılıdır.
Her yayından sonra kabul kontrolü
Bir betik, her ürün sayfasını üçerli gruplar halinde açar ve 200 kodu, soru işareti çapası, örnek çapası veya kanonik adres eksikse başarısız olur. Ardından site haritasını denetler — her ürünü içermeli ve açılamayan dil varyantlarını içermemelidir — ve `robots.txt`’yi, oluşturma için gerekli kaynakları engellememelidir. Her denetim, daha önce bir kez bozulmuş bir şeye karşılık gelir.
Tüm site için bir kez çözümlenmiş kanonik adres
Kanonik adres göreceli olarak, temel düzenlemede tek bir yerde beyan edilir ve her rota için ayrı ayrı çözümlenir. Sosyal paylaşım adresi için de aynı çözüm geçerlidir; bu adres daha önce çoğu sayfada başlangıç sayfasını beyan ediyordu. Bu, her yeni sayfanın kendi kendine hatırlaması gereken bir geleneği değiştiren tek satırlık bir kod; ve kaçınılmaz olarak, hatırlamıyor.
İşe yaramayan şey depo içinde, kodun yanında yazılıdır
Depo, örneğin adres içindeki dil varyantlarının neden dili değiştirmediğini, neden açık görünen çözümün işleri daha kötü yaptığını — sunucu tarafı render’da ne yerel depolama ne de tarayıcı vardır, bu yüzden algılayıcı İngilizceye düşer ve tüm sayfalar İngilizce çıkar — ve gerçek iki çözümün ne olduğunu açıklayan bilinen kusurlar dosyasını içerir. Teknik bir alıcının sınırı bizim yazdığımız halde bulmasını, kendi keşfetmesini tercih ederiz.
Nasıl görünüyor
Süreç, adım adım.
01
Adres envanteri ve eski olanlara ne olduğu
İlk teslimat, mevcut adresler listesi ve her biri için karardır: kalır, yönlendirilir veya kaybolur. Bu sitede 43 kalıcı yönlendirme ortaya çıktı. Herkesin atladığı ve birkaç ay sonra arama sonuçlarında hata sayfaları üreten iştir.
02
İçerik yapısı ve üretildiği kaynaklar
Ürün ve hizmet sayfaları ayrı dosyalardan değil, verilerden oluşturulur. Buradan otomatik üretilen site haritası, tutarlı kanonik adresler ve her sayfanın gerekenlere sahip olduğunu programatik olarak doğrulama imkânı gelir. Yalnızca bundan render edilen sayfaları değil, veri yapısını teslim ederiz.
03
İçerikten önce belirlenmiş bütçelerle kurulum
Baştan itibaren görüntülerin hangi formatta olacağını, neyin önbelleğe alınacağını ve ne kadar alınacağını, neyin sunucuda render edileceğini ve neyin tarayıcıda etkileşimli kalacağını belirleriz. İçerik sonra bu bütçenin içine yerleşir. Ters sıra, lansmanda iyi görünen ve eklenen her sayfayla ağırlaşan siteler üretir.
04
Kapı ve kabul doğrulamasıyla yayınlama
Yayınlama, sunucunun boş belleğini doğrular, bağımlılıkların güvenlik denetimini çalıştırır, temizden derleme yapar ve başarı bildirmeden önce sürecin başlatıldığını onaylar. Hemen ardından kabul betiği sayfaları açar ve ankrajları, kanonik adresleri, site haritasını ve `robots.txt`’yi kontrol eder. İkisi de teslim edilir, bizde tutulmaz.
05
Eksikler ve ölçümler listesiyle teslim
Kodu, yayınlama prosedürünü, geri dönüş prosedürünü, sağlık adreslerini — ve sayı ile birlikte kapsam dışı kalanların yazılı listesini teslim ederiz. Bu site için liste, sunucuda Brotli ve HTTP/2 eksikliğini, her gezinmede çeviri kataloğunun maliyetini ve kullanılmayan font alt kümesini içerir. Listenin bizden gelmesini tercih ederiz.
Dışarıdan doğrulanabilir dört katman
Veriler
Neye dokunuyoruz, nerede duruyorlar ve ne kadar kalıyorlar
Veri koruma sorumlusu olan herkesin soracağı sorular — o sormadan önce burada sorulmuş hâliyle.
İletişim formundaki veriler
Ad, e-posta adresi, telefon, şirket, seçilen hizmet, mesaj, geldiği sayfa ve ziyaretçinin ağ öneki. Bunlar, sürüm dizininin dışında, dizin için `0700` ve dosyalar için `0600` haklarıyla kendi sunucudaki bir günlüğe yazılır. Süre: 24 ay; her yazmada kod tarafından uygulanır, unutulabilecek bir zamanlayıcı tarafından değil.
Yazılmadan önce kesilmiş IP adresi
Yalnızca ağ öneki korunur — IPv4 için `/24`, IPv6 için `/48` — ve başlıktan son sıçrama okunur, çünkü ilk olan istemci tarafından gönderilir ve hiçbir şey kanıtlamaz. Aynı işlev hız sınırlaması tarafından da kullanılır, bu yüzden tam adresin yanlışlıkla ulaşabileceği ikinci bir yer yoktur.
Trafik istatistikleri
Ölçüm, yapılandırılmış analiz aracı üzerinden geçer ve onaydan sonra etkinleşir. Gerçek çerezler, kabulden önce ve sonra canlı sitede ampirik olarak doğrulandı ve çerez politikası bu doğrulamadan sonra yeniden yazıldı — tersi değil. Önceki politika, var olmayan çerezleri listeliyordu.
İşleme kaydı, kodla birlikte sürümlenen
Site tarafından dokunulan her veri türü için, aynı depoda tutulan bir belgede amaç, hukuki dayanak, kategoriler ve süre yer alan bir kayıt vardır. Kod bir süreyi değiştirdiğinde, belge aynı commit içinde değişir. Belirlenmemiş olan şey — örneğin analiz hesabındaki gerçek saklama süresi — açıkça netleştirilecek unsur olarak işaretlenir, olgu olarak beyan edilmez.
Sunucudan çıkmayan şey
Bildirim jetonları, sağlayıcı anahtarları ve kanal tanımlayıcıları. Sağlık sondası yalnızca mantıksal değerler döndürür; tam da bu nedenle, yapılandırma hakkında hiçbir şey ifşa etmeden dış bir servis tarafından sorgulanabilir.
Bir vaka
Tamamını yayınladığınızda kendi sitenizin denetimi ne gösterir
Durum
Bir yeniden yapılandırmadan sonra, kendi site düzenli görünüyordu: tüm sayfalar 200 yanıt veriyordu, gösterge paneli yeşildi. Müşterilerimize sorduğumuz soruyu kendimize sorduk: tek tek ana sayfaya değil, tüm adreslerde dışarıdan aynı anda yapılan bir ölçüm ne söyler?
Ne kurduk
Bilinen her adresi doğrudan isteklerle taradık — 249 adres, adres başına 23 sütun, yönlendirmeleri izlemeksizin, en fazla altı istek paralel — ve sonucu sürümlenmiş bir tablo dosyasına koyduk. Bunun üzerine ayrı kontroller çalıştırdık: HTML’nin gerçek sıkıştırması, her gezinmede ne iletildiği, JavaScript paketlerinin içeriği, hangi fontların indirildiği, sunucunun hangi önbellek ve taşıma başlıklarını sunduğu. Her sayı, yapılandırmadan çıkarılmadan, gerçek yanıtta doğrulandı.
Ne çıktı
244 adres 200 yanıt veriyor ve 5’i yönlendiriyor. 131 sayfanın kanonik adresi yoktu, 244’ün 219’u ise paylaşım adresi olarak ana sayfayı beyan ediyordu — ikisi de şimdi temel düzen içinde her rotaya uygulanan birer satırla düzeltildi. Sunucu Brotli ve HTTP/2 sunmuyor. Çeviri kataloğu, 2.268 anahtar, her gezinmede iletiliyor ve her seferinde yaklaşık 70 KB sıkıştırılmış maliyet oluşturuyor. 443 KB’lık bir paket, biri בלבד yönlendirilebilir olan dört dil kataloğu içeriyor. Fontlar, doğrulanan sayfalarda tek bir Kiril karakteri olmamasına rağmen Kiril alt kümesini de getiriyor. Bunları yeniden üreten komutlarla birlikte tüm sayılar depoda yazılıdır.
Vakanın söylemedikleri
Bunlar laboratuvar ölçümleri, dışarıdan, doğrudan isteklerle yapılmıştır. Gerçek ziyaretçilerden gelen saha verileri değildir ve onları öyle sunmuyoruz: algılanan yüklenme metrikleri kullanılan araçta okunamadı ve açıkça ölçülmemiş olarak işaretlendi. Denetim sırasında uygulama derlemesini çalıştırmadık, çünkü aynı checkout üzerinde birkaç kişi çalışıyordu.
Sorular
İnsanların aramadan önce bize sordukları
Tam olarak ne ile inşa ediyorsunuz?
Next.js 16.2.4, React 19.1.0 ve TypeScript; stiller için Tailwind ve Radix primitive’leri üzerine kurulu erişilebilir arayüz bileşenleri. Sayfalar derleme sırasında önceden oluşturulur ve önbellekten sunulur — bu dışarıdan doğrulanır: yanıt başlıklarında `x-nextjs-prerender: 1` ve `x-nextjs-cache: HIT` bulunur. Bu, okuduğumuz teknolojiler listesi değil; şu anda okuduğunuz sayfanın çalıştığı yığındır.
Güvenlik hakkında söylediklerinizi nasıl kendim doğrularım?
Tek bir komutla: `curl -I https://www.megapromoting.com/servicii`. `strict-transport-security: max-age=63072000; includeSubDomains; preload`, `x-content-type-options: nosniff`, `x-frame-options: SAMEORIGIN`, `referrer-policy: strict-origin-when-cross-origin`, kamerayı kapatan ve mikrofonu yalnızca kendi kökeni için bırakan bir izin politikası, ayrıca açık kaynak listeli bir içerik güvenlik politikası göreceksiniz. İlk beş başlık uygulama yapılandırmasından gelir; sonuncusu web sunucusu tarafından gönderilir — iki ayrı yer, ve teslimde bunu yazıyoruz.
Son yayında bir şeyi bozmadığınızı nereden biliyorsunuz?
Yayınlamadan sonra çalıştırılan bir kabul betiğinden. Her ürün sayfasını açar ve 200 kodu, soru çapasını, örnek çapasını veya kanonik adresi eksikse başarısız olur; ardından site haritasının her ürünü içerdiğini ve açılmayan dil varyantlarını içermediğini, ayrıca `robots.txt`’nin oluşturma kaynaklarını engellemediğini doğrular. Listedeki her kontrol, daha önce bozulmuş bir şeye karşılık gelir. Betik projeyle birlikte teslim edilir — siz de çalıştırabilirsiniz.
Siteniz hızlı mı?
Ne ölçtüğünüze bağlı; her iki yönde de rakamlarımız var. İyi olanlar: sayfalar önceden oluşturuluyor ve önbellekten sunuluyor, görseller AVIF ve WebP olarak bir yıllık önbellekle çıkıyor, yazı tipleri yerel olarak barındırılıyor. Kötü olanlar, kendi sitemizde ölçülenler: sunucu Brotli ve HTTP/2 sunmuyor — `Accept-Encoding: br` içeren bir istek sıkıştırılmamış yanıt alıyor; çeviri kataloğu her gezinmede aktarılıyor ve her seferinde yaklaşık 70 KB sıkıştırılmış maliyete sahip; 443 KB’lık bir paket, yalnızca biri yönlendirilebilir olan dört dil kataloğu içeriyor. Size laboratuvar skoru vermiyorum; ölçülmüş baytları ve onlardan çıkan düzeltme listesini veriyorum.
Site haritasını kim bakımda tutuyor?
Kimse, ve bu doğru cevap. Beş veri kaynağından üretiliyor — sabit adresler, makaleler, ürünler, hizmetler ve hizmet × alan birleşimleri — ve son bir deduplikasyondan geçiyor. 147 adres çıkıyor; kodda da, üretimde sunulan dosyada da aynı sayı. Yeni bir sayfa otomatik olarak girer. Bugün eksik olanı açıkça söyleyelim: girdiler son değişiklik tarihi taşımıyor ve indekslenebilir 93 adres henüz haritada yok. Bunlar düzeltme listesindeler, saklı değiller.
Çok dilli siteler mi yapıyorsunuz?
Burada kesin olmam gerekiyor, çünkü bu sitenin en net sınırı bu. Adresten dil değiştirme çalışmıyor: yapılandırma Romence’yi sabitliyor, bu yüzden algılayıcı parametreyi hiçbir zaman okumuyor. Depoda, açık görünen çözümün neden daha kötü olduğunu yazdım — sunucu tarafı oluşturmada ne yerel depolama ne de tarayıcı var, bu yüzden algılayıcı İngilizceye düşüyor ve tüm sayfalar İngilizce çıkıyor — ve tek gerçek çözümün ne olduğunu da: dil segmenti olan yol tabanlı rotalar ya da her sayfada dili sunucuda çözmek. Birincisi önerilir. Yeni bir proje için doğrudan yol tabanlı rotalarla başlıyoruz; mevcut bir proje için bu bir iş, ayar değil.
Bir siteyi yeniden yaparken eski adreslere ne oluyor?
Envanteri çıkarılıyor ve her biri için bir karar veriliyor: kalır, kalıcı olarak yönlendirilir ya da kaybolur. Bu sitenin temizliğinde yapılandırmada 43 yönlendirme ortaya çıktı. Ayrıca uygulama içinde yönlendiren 11 sayfa daha var — çalışıyorlar, ama yönlendirme yanıtını göndermeden önce sayfayı oluşturuyorlar, bu da israf; bunlar yapılandırmaya taşınacaklar listesinde. Size bunu, teslimatta ne tür bir liste alacağınızı bilmeniz için söylüyorum.
Formun gerçekten teslim ettiğini nasıl anlarım?
Ona sorarsınız: `GET /api/health/contact`, bir lead’in şu anda bir insana ulaşabilmesi durumunda 200, ulaşamaması durumunda 503 döner; bildirim kanalı jetonunun geçerli olduğunu ve istek günlüğünün yazılabildiğini ayrı ayrı kontrol eder. Yanıt yalnızca mantıksal değerler içerir, jeton asla içermez. Tam burada bir kez sorun çıkmıştı: iptal edilmiş jeton, 500 dönen rota, iz bırakmadan kaybolan istekler. Şimdi istek, teslimat denenmeden önce günlüğe yazılıyor.
Ne yapmıyorsunuz?
Sahip olmadığımız bir projede ölçmediğimiz arama sıralarını, dönüşüm yüzdelerini veya performans puanlarını vaat etmiyoruz. Eski adres listesi ve geri dönüş prosedürü olmadan site teslim etmiyoruz. Erişiminin olmadığı üçüncü taraf platformların sorumluluğunu almıyoruz. Ve bilinen bir sınırı olan bir şeyi hazır diye sunmuyoruz — bir sınırım varsa, onu üretimde siz bulmadan önce depoda yazılı bulursunuz.
Yukarıdaki iddialar neye dayanıyor (15 kaynak)
Üretim, önbellekten önceden render edilmiş sayfalar sunuyor: `x-nextjs-prerender: 1`, `x-nextjs-cache: HIT`, `cache-control: s-maxage=31536000`, `x-nextjs-stale-time: 300`https://www.megapromoting.com/servicii · 2026-09-06
Gerçek yanıttaki güvenlik başlıkları: HSTS `max-age=63072000; includeSubDomains; preload`, `nosniff`, `SAMEORIGIN`, `strict-origin-when-cross-origin`, `microphone=(self)` ile izin politikası; artı nginx tarafından sunulan ve `next.config.ts`'de BULUNMAYAN eksiksiz bir içerik güvenlik politikasıhttps://www.megapromoting.com/servicii · 2026-09-06
Bunlardan 13 tanesi depolarımızdaki kod ve dosyalardır. Adlarını ya da satırlarını yayımlamıyoruz: hepsi bir arada, tek bir sayfada, yalnızca bize ait olmayan sistemlerin nasıl kurulduğunu fazla net anlatırdı. İstek üzerine, depoda sizinle birlikte gözden geçiriyoruz — doğrulama hâlâ mümkün, sadece bir görüşme içinde yapılıyor.