Dlaczego folder uploads w WordPressie jest tak duży
Folder uploads w WordPressie jest duży, bo WordPress nigdy nie zapisuje jednego pliku na zdjęcie. Każde przesłanie generuje stały zestaw kopii w innych rozmiarach obok
Opublikowano
Folder uploads w WordPressie jest duży, bo WordPress nigdy nie zapisuje jednego pliku na zdjęcie. Każde przesłanie generuje stały zestaw kopii w innych rozmiarach obok oryginału — siedem z nich dla typowego zdjęcia z aparatu, zanim jeszcze jakikolwiek szablon czy wtyczka dołoży kolejne. Nic nie jest uszkodzone; widzisz po prostu mnożenie, które zachodzi przy każdym pojedynczym przesłaniu. Rozwiązaniem jest przestać generować rozmiary, których i tak nigdy nie serwujesz, a następnie zregenerować bibliotekę, żeby stare kopie zostały usunięte z dysku.
Zrób rachunki
Prześlij jedno zdjęcie JPEG o wymiarach 4000×3000 i zajrzyj do /wp-content/uploads/2026/07/. Nie znajdziesz tam jednego pliku. Znajdziesz te:
photo.jpg— oryginał, nietkniętyphoto-scaled.jpg— kopia 2560px, którą WordPress serwuje zamiast oryginałuphoto-150x150.jpg—thumbnailphoto-300x225.jpg—mediumphoto-768x576.jpg—medium_largephoto-1024x768.jpg—largephoto-1536x1152.jpg—medium_largew rozmiarze 2×photo-2048x1536.jpg—largew rozmiarze 2×
To oryginał plus siedem pochodnych, wygenerowanych przez samą podstawę WordPressa. Przesłanie pliku o wadze 3 MB może wylądować na dysku jako 5–6 MB, zanim uruchomi się choćby jedna wtyczka. Dodaj teraz szablon, który rejestruje cztery własne rozmiary, oraz WooCommerce (kolejne trzy), a jedno przesłanie zamienia się w czternaście albo piętnaście plików. Pomnóż to przez bibliotekę liczącą kilka tysięcy zdjęć, a rozmiar folderu przestaje być zagadką.
Jeśli chcesz poznać dokładną liczbę dla własnych wymiarów i zarejestrowanych rozmiarów, kalkulator przestrzeni na zdjęcia wykona te mnożenia za Ciebie.
Dlaczego tak się dzieje
Podczas przesyłania wp_generate_attachment_metadata() wywołuje wp_create_image_subsizes(), która przechodzi w pętli przez każdy rozmiar zwrócony przez get_intermediate_image_sizes() i zapisuje plik dla każdego z nich, o ile oryginał jest wystarczająco duży, żeby dany rozmiar wygenerować. Podstawa WordPressa rejestruje thumbnail, medium, medium_large, large, a do tego rozmiary retina 1536x1536 i 2048x2048 dodane w WP 5.3. Każdy szablon czy wtyczka, które wywołują add_image_size(), dokładają się do tej samej pętli — na stałe, przy każdym kolejnym przesłaniu.
Plik -scaled pochodzi z osobnego mechanizmu: filtra big_image_size_threshold, domyślnie ustawionego na 2560px. Wszystko szersze dostaje pomniejszoną kopię, która staje się serwowanym obrazem „full”, podczas gdy oryginał zostaje na dysku. Duże przesłanie zachowuje więc jednocześnie gigantyczny oryginał i wersję 2560px.
Dokładnie zobaczysz, co generuje Twoja konfiguracja dla konkretnego zdjęcia, korzystając z inspektora rozmiarów zdjęć.
Jak to naprawić, po kolei
1. Zmierz, zanim czegokolwiek dotkniesz. Zgadywanie to strata czasu. Z katalogu głównego witryny:
du -sh wp-content/uploads
find wp-content/uploads -type f \( -name '*.jpg' -o -name '*.webp' -o -name '*.png' \) | wc -l
du -ah wp-content/uploads | sort -rh | head -20
2. Wyrejestruj rozmiary, których nie serwujesz. Większość szablonów nigdy nie wyświetla rozmiarów 1536 i 2048, a wiele nigdy nie używa medium_large. Wyrzuć je:
// functions.php — stop generating sizes this site never outputs
add_action( 'init', function () {
remove_image_size( '1536x1536' );
remove_image_size( '2048x2048' );
} );
// Drop medium_large too, if your theme doesn't use the 768px size
add_filter( 'intermediate_image_sizes_advanced', function ( $sizes ) {
unset( $sizes['medium_large'] );
return $sizes;
} );
3. Zregeneruj, żeby usunąć stare kopie. Wyrejestrowanie zatrzymuje tylko przyszłe generowanie — pliki, które już są na dysku, zostają, dopóki nie przeprowadzisz regeneracji:
wp media regenerate --yes
Nowsze wersje WP-CLI usuwają na bieżąco pliki tych rozmiarów, które nie są już zarejestrowane. Jeśli zamiast tego używasz wtyczki Regenerate Thumbnails, zaznacz w niej opcję „delete unregistered sizes” — bez zaznaczenia tego pola stare pliki pozostaną.
4. Poluj na osierocone pliki. Zmiana szablonu nigdy nie sprząta rozmiarów zarejestrowanych przez poprzedni szablon. Usuwanie wpisów też nie zawsze usuwa ich pochodne. Jeśli po kroku 3 du -sh wciąż jest znacznie powyżej tego, co przewiduje kalkulator, masz osierocone pliki — pliki na dysku, do których nie odwołuje się żaden załącznik.
Czego nie robić
Nie wyłączaj skalowanych zdjęć, żeby „zaoszczędzić miejsce”. Plik -scaled jest mniejszy niż Twój oryginał. Wyłączenie big_image_size_threshold niczego nie usuwa — sprawia jedynie, że WordPress serwuje każdemu odwiedzającemu pełny, wielomegabajtowy oryginał. To decyzja dotycząca transferu i jakości, a nie porządkowania przestrzeni, i zwykle tylko pogarsza wagę strony. Narzędzie do wyłączania skalowanych zdjęć wyjaśnia, kiedy naprawdę jest to właściwy wybór; zmniejszanie folderu uploads takim przypadkiem nie jest.
Nie usuwaj plików bezpośrednio z folderu uploads przez SFTP. Lista rozmiarów pochodnych każdego załącznika mieszka w jego _wp_attachment_metadata. Usuwanie plików ręcznie zostawia uszkodzone odwołania, a regeneracja nie jest w stanie odtworzyć rozmiaru, jeśli usunąłeś oryginał, z którego jest on tworzony. Usuń oryginał i zdjęcie przepada na dobre.
Nie ustawiaj thumbnail/medium/large na 0 w Ustawienia → Media, licząc na to, że folder się skurczy. Wyzerowanie rozmiaru zatrzymuje przyszłe generowanie, ale nie rusza niczego, co już jest na dysku, a interfejs i tak nie sięga do medium_large, 1536, 2048 ani do żadnego rozmiaru z szablonu czy wtyczki — tych tam po prostu nie ma.
Nie obwiniaj bazy danych. Ciężki folder uploads to pliki zdjęć, praktycznie nigdy baza danych. Optymalizacja tabel nie ruszy tej liczby.
Wciąż nie idzie?
Jeśli po regeneracji folder nadal jest większy niż się spodziewasz, przepuść swoje rzeczywiste wymiary zdjęć i zarejestrowane rozmiary przez kalkulator przestrzeni i porównaj jego wynik z du -sh wp-content/uploads. Duża różnica oznacza osierocone pliki po starym szablonie albo usuniętych wpisach — nie podstawa WordPressa i nie coś, co naprawi kolejna regeneracja. Mała różnica oznacza, że matematyka jest po prostu taka, jaka jest: ponad siedem plików na przesłanie, działające dokładnie tak, jak zaprojektowano.