Budżet wydajności to zestaw wyraźnych limitów dotyczących cech, które określają szybkość ładowania i reakcji strony, uzgodnionych z góry i egzekwowanych w ramach procesu rozwoju. Budżety są zazwyczaj wyrażane jako progi dla metryk, takich jak „Największy rozmiar treści”, wartości, takich jak całkowity rozmiar skryptu JavaScript, lub reguł, takich jak liczba dozwolonych żądań stron trzecich.
Problem, który rozwiązuje, to regresja, a nie optymalizacja. Strony nie stają się wolniejsze z powodu jednej decyzji; akumulują obciążenie poprzez wiele indywidualnie uzasadnionych dodatków, z których każdy jest zbyt mały, by wywołać obawy. Nowa funkcja, dodatkowy skrypt śledzący, większy obraz główny, inna grubość czcionki i aktualizacja biblioteki komponentów wydłużają działanie strony o ułamek sekundy, a po dwóch latach strona jest znacznie wolniejsza bez wyraźnej przyczyny. Budżet sprawia, że każdy dodatek napotyka na ograniczenia.
Budżety działają, ponieważ przekształcają abstrakcyjne preferencje dotyczące szybkości w ograniczenie, które należy uwzględnić w momencie podejmowania decyzji. Bez budżetu dyskusja o tym, czy scenariusz jest wart swojej ceny, pojawia się po fakcie, o ile w ogóle, a osoba proponująca dodanie czegoś nie ma powodu, by to rozważać. W przypadku budżetu dodanie czegoś oznacza albo utrzymanie się w limicie, albo wyraźne usunięcie czegoś innego, co i tak powinno mieć miejsce.
Określenie liczb wymaga dowodów, a nie aspiracji. Przydatnymi punktami odniesienia są bieżąca wydajność, dzięki której budżet zapobiega pogorszeniu; pomiary konkurencji, dzięki którym cel odzwierciedla rynek, na którym konkuruje witryna; oraz progi związane z metrykami istotnymi dla wyszukiwania i doświadczenia użytkownika. Budżety ustalone na poziomach, których witryna obecnie nie jest w stanie osiągnąć, są przydatne jako cele, ale należy je odróżnić od limitów narzucanych nowym projektom, w przeciwnym razie każda kompilacja zakończy się niepowodzeniem, a weryfikacja zostanie wyłączona.
Egzekwowanie w narzędziach zautomatyzowanych to element oddzielający budżet od dokumentu. Zintegrowanie kontroli z procesem kompilacji, tak aby zmiana przekraczająca limit została odrzucona lub wymagała wyraźnej zgody, jest mechanizmem generującym to zachowanie. Budżety zapisane w specyfikacji i okresowo sprawdzane przez zainteresowanego inżyniera są rutynowo przekraczane, ponieważ zanim ktokolwiek zauważy, że praca została wysłana, a koszt wycofania przekracza koszt jej akceptacji.
Granularność powinna być zgodna ze sposobem budowy witryny. Różne szablony mają różne cechy, a jeden budżet dla całej witryny albo niepotrzebnie ogranicza prostą stronę, albo pozwala na niekontrolowany rozwój strony interaktywnej. Ustalanie budżetów dla każdego szablonu, z najbardziej rygorystycznymi limitami na ścieżkach o najwyższej wartości, takich jak strony docelowe i płatności, kieruje ograniczenie tam, gdzie jest ono najbardziej potrzebne.
Wyjątki wymagają zdefiniowanego procesu, a nie są zakazane lub nieformalne. Uzasadnione przypadki pojawiają się, gdy funkcja rzeczywiście uzasadnia dodatkowy ciężar, a budżet bez ścieżki wyjątku jest omijany lub blokuje wartościową pracę. Wymaganie, aby wyjątek został zgłoszony, zatwierdzony przez osobę odpowiedzialną za wydajność i zarejestrowany z datą wygaśnięcia, utrzymuje mechanizm wiarygodności, jednocześnie dopuszczając rzeczywiste przypadki.
Ponieważ budżety ograniczają decyzje podejmowane w obszarze inżynierii, projektowania i marketingu, wymagają one porozumienia wykraczającego poza zespół mierzący wydajność. W praktyce limity są ustalane poprzez wydajność sieci praca, egzekwowanie jest wbudowane w rurociąg przez rozwój produktów, a komercyjny argument za ograniczeniem jest zwykle przedstawiany poprzez połączenie wydajności z konwersją przy użyciu analizy prowadzonej przez Analityka danych.