Jak zrychlit web

13. května 2025

Lang: cs en de es

Když si firma zřídí web, webovou aplikaci nebo e-shop a projekt uspěje, tedy lidé ho aktivně používají, je to teprve začátek. Postupem času web začne zpomalovat. A právě v tomto bodě si mnozí kladou otázku: „Jak web zrychlit?“ Existuje mnoho způsobů, jak výkon webu zlepšit. Jen zřídka však stačí něco jednoduše zapnout. V tomto článku vám popíšu, jaké jsou možnosti zrychlení webu a jak problém s pomalým webem řešit systematicky.

Většina lidi očekává, že přijde odborník a jenom něco upraví či zapne a najednou bude webová aplikace rychlejší. Ovšem tak to nikdy není.
Ano zkušený IT specialista dokáže dát několik typů, jejichž aplikování do praxe může být jednoduché a něco z toho bude mít dostatečně uspokojující vliv na rychlost webu. Ovšem i zkušený IT odborník musí udělat analýzu, aby zjistil, které části aplikace fungují v rámci běžných hodnot a které části aplikace jsou problémové a tedy je potřeba se zaměřit na tu konkrétní část.

Řešení na míru vs existující řešení vs služba

Jakmile budete chtít řešit úpravy nějaké aplikace, aby jste optimalizovali rychlost webové aplikace, je potřeba si uvědomit, že ne vždy máte možnost dělat úpravy nebo né vždy je rozumné dělat úpravy

Služba

Pokud používáte nějakou službu, tak možnosti zlepšit rychlost je minimální. Protože u takové aplikace, tedy vlastně služby, nemáte možnost upravovat zdrojový kód. Co však můžete ovlivnit je, aby jste takovou aplikaci nepoužívali tak, že by jste zhoršovali rychlost. Tedy je potřeba se při realizaci zaměřit na to, aby jste rychlost neúmyslně nezhoršovali.

Existující řešení

Například opensource řešení Wordpress pro blog nebo Prestashop pro eshop, jsou předpřipravená opensource řešení, která můžete hnedka začít používat. (Opensource řešení si můžete sami zdarma nainstalovat nebo si za odměnu najmout IT odborníka, který instalaci, konfiguraci provede za vás a ještě vás proškolí.) Existují opensource řešení mají mnoho funkcí, některé jejich funkce, pokud je budete používám a budete mít hodně dat, tak můžou negativně ovlivnit rychlost. Stejně tak různé moduly (rozšíření) třetích stran mohou mít špatný vliv na rychlost takové webové aplikace.

U těchto otevřených řešení máte možnost upravovat kód aplikace a často a v případě potřeby i provozovat aplikaci na vlastním serveru, takže pak máte i možnost ladit nastavení serveru. Opensource řešení, jsou tedy softwary, kde máte velké možnosti optimalizace rychlosti. Ovšem je potřeba dát pozor, aby vaše úpravy byly udělané tak, že nerozbijí jinou funkčnost a že bude jednoduchý upgrade aplikace. Jinak si můžete zadělat dlouhodobě na spoustu problémů.

Při práci s existujícími řešeními je důležité zvážit, jaký dopad budou mít vaše změny na výkon aplikace. Zaměřte se zejména na:

  • použité funkce
  • zvolená rozšíření/moduly
  • vliv vašich úprav na rychlost běhu systému
Tyto faktory navíc výrazně ovlivňuje také množství zpracovávaných dat v aplikaci.

Analýza

Aby jste mohli zrychlit web musíte vědět co je pomalé. Proto první co musíte udělat je provést analýzu rychlosti načtení webu. Pokud na váš web bude chodit i víc než jeden člověk, tak udělejte zátěžový test webu. Tím zjistíte jestli web funguje i pod zátěží a kolik návštěvníků může vaši webovou aplikaci používat současně v jednu chvíli.
Jako výstup budete mít konkrétní informace a čísla:

  • jak dlouho trvá odpověď serveru - načtení prvního bajtu stránky
  • jak dlouho trvá zobrazení stránky uživateli
  • jestli vaše webová aplikace a server dobře zvládá situaci, kdy máte hodně návštěvníků na webu
  • kolik přesně návštěvníků v jeden moment může webovou aplikaci používat

Frontend vs backend

Frontend je to co běží u uživatele v prohlížeči a backend to co běží na serveru. Celkový uživatelův dojem o rychlosti webové aplikace se tak skládá z těchto dvou částí.

Rychlost backendu

Rychlost backendu změříte jednoduše odpovídá tomu měření nazvané TTFB (Time to First Byte). Pokud ho provádíte po síti, tak se k tomu přičítá vliv pomalosti sítě.
TTFB (Time to First Byte) definuje dobu od odeslání požadavku na server po přijetí prvního bajtu odpovědi. Tento parametr je zásadní pro celkovou rychlost načítání stránek, což má přímý vliv na uživatelský zážitek a následně SEO (optimalizace pro vyhledávače). TTFB je klíčový ukazatel výkonu webových stránek a aplikací.

Rychlost frontendu

Protože dneska webové aplikace mají spousta funkcí, které se vykovávají až po načtení v prohlížeči u uživatele, tak čas, kdy se uživateli skutečně zobrazí stránka může být i výrazně větší než jen doba, kdy dostane odpověď od serveru. Obzvlášť pokud pro zobrazení stránky se posílají ještě další dotazy na server nebo i dotazy na jiné aplikace.
V případě výpočetně náročného kódu na to má vliv i výkon uživatelova zařízení (počítače, telefon). Také načtení velkých dat např obrázků na pomalé síti trvá mnohem déle.

Orientační ověření rychlosti webu z pohledu frontendu může běžný uživatel provést tak, že webovou aplikaci si zobrazí na nějakém starém a tedy pomalém (nevýkonném) zařízení (starém či levném telefonu či počítači).

servery clovek webovy prohlizec

Konkretní možnosti jak zrychlit webovou aplikaci

Počátky toho, kde je problém s rychlostí webové aplikace může být různý. Je potřeba zkontrolovat a případně optimalizovat toto:

  • nastavení web serveru
  • nastavení databáze
  • cache DB
  • cache aplikace
  • špatná struktura databáze
  • neoptimálně vytvořené SQL dotazy do databáze
  • špatný kód backendu aplikace
  • špatný kód frontendu aplikace - JavaScript
  • načítaní velkého množství dat
Tyto oblasti je třeba zkontrolovat a v případě problémů zoptimalizovat.

Nastavení web serveru

Nastavení web serveru hraje klíčovou roli v celkové rychlosti a výkonu webové aplikace. Mezi nejdůležitější faktory patří konfigurace cache, nastavení komprese (např. gzip nebo brotli), správné směrování požadavků, a volba vhodného serverového software, jako je Apache, Nginx nebo LiteSpeed. Výkon také ovlivňuje počet současně zpracovaných požadavků, velikost odpovědí, latence sítě a použití HTTP/2 nebo HTTP/3.
Nesprávně nastavený server dokáže výrazně zvýšit odezvu aplikace a zkazit uživatelský zážitek.

postgresql server

Nastavení databáze

Nastavení databáze má zásadní vliv na rychlost webové aplikace, protože většina dynamických webů na ní intenzivně závisí.
Výkon ovlivňuje i volba databázového systému například: MySQL/MariaDB, PostgreSQL, Microsoft SQL, NoSQL databáze MongoDB, Redis.
Klíčové faktory zahrnují optimalizaci dotazů, správné indexování tabulek, nastavení cache (např. query cache nebo externí cache jako Redis). Výkon typicky můžete zvýšit zvýšením konfiguračních parametrů, ale pozor pro některé parametry to neplatí a zároveň musíte brát v potaz, že máte nějaké hardwarové limity hlavně RAM. A do RAM se musí vejít data v cache, jinak se databáze naopak zpomalí.

Cache DB

Databázový server má vlastní cache, takže může automaticky cachovat opakující se stejné dotazy a tím zrychlit jejich zpracování. Cache databáze výrazně ovlivňuje rychlost webové aplikace, protože snižuje nutnost opakovaného dotazování databáze na stejná data. Což vede k rychlejším odpovědím a menšímu zatížení databázového serveru.

Jednoduchým způsobem lze zrychlit například dotazy, které obsahují aktuální čas. Pokud nepotřebujete přesný čas na sekundy, ale stačí vám např. aktuální čas s přesností na minuty nebo deset minut, můžete výsledek takového dotazu uložit do cache a opakovaně používat. Tím se výrazně sníží počet výpočetně náročných dotazů do databáze a zlepší se celkový výkon aplikace.

SQL

SQL dotazy mají přímý dopad na rychlost webové aplikace, protože každý dotaz na databázi může znamenat zpoždění při získávání dat. K výkonu dotazů přispívá jejich optimalizace, která zahrnuje použití správných indexů, vyhýbání se neefektivním JOIN operacím a minimalizaci počtu dotazů na databázi. Složitá nebo špatně navržené SQL dotazy, jako například dotazy, které procházejí celé tabulky místo využití indexů, mohou výrazně zpomalit aplikaci. Dalšími faktory jsou agregace a seskupování dat, které mohou být náročné na výpočet, stejně jako zbytečné selekce velkých objemů dat, které se nakonec nevyužijí. Použití limitů pro omezení počtu vrácených řádků a optimalizace dotazů tak, aby se načítala pouze potřebná data, vede k výraznému zrychlení aplikace. Kvalitní návrh databázového schématu a pravidelná údržba, jako je analýza a optimalizace dotazů, jsou klíčem k dosažení dobrého výkonu.

Se správnou strukturou databáze a dobrými SQL dotazy pomáhají i moderní programovací frameworky jako je například PHP/Symfony, který používá databazouvou vrstvu Doctrine. Doctrine vám umožní rychle a dobře vytvářet databázové tabulky a SQL dotazy, kterou jsou rychlé. Zbylých 10% dotazů do databáze si musíte napsat a optimalizovat ručně sami.

Aplikační cache

Aplikační cache slouží k dočasnému uložení dat na úrovni aplikace. V aplikaci můžete cachovat data, která získáte z aplikací třetích stran, z databáze, nebo jinak, například složitě z různých zdrojů. Tím výrazně zrychlíte odezvu aplikace a snižujete zátěž celého serveru.
Samozřejmě musíte takovou cache pak správně invalidovat.

Kód backendu

Kód backendu má zásadní vliv na rychlost webové aplikace, protože určuje, jak efektivně a rychle server zpracovává požadavky a generuje odpovědi.
Pokud frontend musí načítat data, a backend je pomalý pak i frontend bude pomalý.
Rychlost backendu závisí na rychlosti získaní dat z databáze, takže potřebujete mít rychlé SQL dotazy, tedy potřebujete mít SQL dotazy správně napsané a dobře nastavený databázový server.

Samotná optimalizace backendového kódu zahrnuje psaní efektivních algoritmů, minimalizaci zbytečných operací, Důležitým faktorem je i využívání správného design patternu a architektury, což může zlepšit škálovatelnost a údržbu kódu. Vysoký počet volání API, špatně napsané cykly, nevhodné používání rekurze nebo zbytečné opakování operací mohou výrazně zpomalit výkon aplikace. Vždy platí, že dobře napsaný a optimalizovaný kód výrazně přispívá k rychlosti a stabilitě webové aplikace.

JavaScript

JavaScript má významný vliv na rychlost webové aplikace, protože většina interaktivity a dynamického chování na moderních webových stránkách je závislá právě na tomto jazyce. Vliv na výkon má způsob, jakým je JavaScript načítán, vykonáván, optimalizován a celkově naprogramován. Velikost a struktura JavaScriptových souborů, způsob jejich načítání (synchronní vs. asynchronní) a používání technik, jako je lazy loading nebo kód splitting, mohou výrazně zrychlit dobu načítání stránky. Dále je důležité minimalizovat a komprimovat JavaScript, aby se snížila jeho velikost a zrychlil přenos dat mezi serverem a klientem. Na výkon může mít vliv i způsob, jakým jsou manipulovány DOM a jak efektivně jsou využívány funkce, jako je debouncing nebo throttling, pro omezení počtu vykonávaných operací. Špatně napsaný nebo neoptimalizovaný JavaScript, který často manipuluje s DOM nebo provádí složité výpočty, může zpomalit aplikaci a negativně ovlivnit uživatelský zážitek.

Typický problém je, že na frontendu je spousta JavaScript kódu, kterému trvá než vykreslí stránku. Je potřeba vědět, jestli takový kód je potřeba vykonávat či ne. Jestli daný kód dokážete zoptimalizovat, nebo ne. Jestli takový kód nevolat asynchronně a tím pádem se většina stránky načte dříve než tento méně důležitý prvek.

Úplně zbytečným problémem je, když stránka načítá informace mnoha samostatnými dotazy, místo aby informace načetla hromadně jedním dotazem.

Pokud načítáte data z vlastního serveru, můžete optimalizovat toto načtení nebo rovnou tyto data vložit do stránky na backendu. Pokud načítáte něco z jiných serverů, rychlost načtení moc neovlivníte, načítejte tedy data asynchronně a mezitím stránku vykreslete s prázdným místem. Nebo možná data ani nemusíte načítat, vložte jen ilustrativní foto a data načtěte až ve chvíli, kdy si uživatel danou část stránky zobrazí či na ni klikne.

Typické výkonnostní problémy aplikací

Nejčastěji se setkávám s těmito konkrétními problémy u webových aplikací:

  • K plnému vykreslení stránky často brání dlouho trvající vykonávání JavaScriptu. Protože je tam velmi mnoho různého JavaScriptu nebo se provádí mnoho dotazů
  • Špatně navržená DB aplikace.
  • Špatný kód aplikace, důsledkem čehož trvá dlouho, než webserver odešle odpověď.
  • Při vývoji se nebere v potaz, že aplikace v reálném provozu bude mít mnohem více dat.

Některé úpravy je těžké až nemožné realizovat, například strukturu databáze těžko změníte. Pro optimalizaci je potřeba znát aplikaci, porozumět k čemu slouží a pak se dá lépe optimalizovat a zrychlit.

Výběr technologie

Jakou technologii použijete, má také značný vliv na výkon. Dneska by už nikdo neprovozoval nic na Windows, pokud není donucen. Všichni používají Linux nebo provozují aplikace v Cloudu, což reálně také běží na Linuxu.

Na typické účely existují připravené specializované technologie. Použijte je! Například na prohledávání textů se používá ElasticSearch. Data se ukládají do relačních nebo noSQL databází.

Takže si promyslete, co potřebujete, a vyberte vhodný nástroj, ušetří vám to čas a poskytne výkonnostně optimalizované řešení.

Vliv na výkon

Vliv na výkon má samozřejmě i hardware, operační systém, verze softwaru jako je: databáze, PHP, typ virtualizace.

Může se stát, že na nějaké verzi softwaru budete mít výkonnostní propad. Například pokud budete mít špatně napsané dotazy, tak na jedné verzi databáze může být výkon přijatelný a na jiné verzi výrazně horší. Stejně tak například VMware má horší výkon při čtení dat z disku oproti Linuxu KVM (např. Proxmox), přestože v obojím budete provozovat stejnou VPS. V kombinaci těchto dvou zanedbaných problémů narazíte na výrazný výkonnostní propad

Rozhodně nespadněte do stavu, kdy budete aplikaci vyvíjet a optimalizovat jen za použití určité jedné verze softwaru. Pak vám hrozí, že ustrnete na místě a statisticky jsou dlouhodobě takové aplikace horší a tudíž i pomalejší, navíc problémové a mají problém s upgradem.

Jak optimálně řešit výkon

Optimalizace výkonu běh na dlouhou trať. Nemá smysl, aby optimalizace byla prioritou. Zároveň ji však nezanedbávejte. Věnujte se tropikalizaci průběžně. Výkonnostní propady řešte včas. A pak si nebudete muset urgentně najímat experta, aby vám zrychlil aplikaci.
Pokud se problém netýká pouze jedné stránce, ale prostě server (apache/NginX a databáze) nestíhají, tak nejjednodušší řešení je navýšit výkon, tedy CPU či RAM.

Pokud potřebujete pomoci s optimalizací a zrychlením webové aplikace neváhejte mě kontaktovat.

Články na podobné téma

Rector: upgrade PHP aplikace
Programovací jazyk Go
Analýza zadání a nacenění vývoje softwarového projektu
Python program na ovládání Dockeru pomocí API
Jak použít aplikaci MailCatcher pro testování emailů
Návod: Python OpenAI API
Vytvoření WebSocket webové aplikace a nastavení proxy
Řízení projektů: Agilní vývoj softwaru
Jak provozovat staré PHP aplikace
Co by měl umět dobrý programátor
Programovací jazyk Rust
NodeJS: vývoj, konfigurace serveru
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
REST API: API platform
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Připojení k Microsoft SQL Serveru z Linuxu
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF

OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+