Postawienie witryny stagingowej WordPressa było kiedyś bolesną częścią pracy. Skonfigurować subdomenę, skopiować bazę danych, zsynchronizować pliki, poprawić znajdź-i-zamień i modlić się, żeby nic w wp-config.php nie wybuchło. WP Staging Pro sprowadził to wszystko do klonu jednym kliknięciem i dla większości agencyjnych procesów pracy problem stagingu jest praktycznie rozwiązany.
Problem w tym, że proces stagingu wciąż robi się cięższy, mimo że wtyczka do stagingu wciąż robi się szybsza. A winowajcą prawie zawsze jest ten sam folder: wp-content/uploads.
Co tydzień pracuję z wieloma agencjami i zespołami wtyczek. Schemat jest niemal identyczny wszędzie. Witryna startuje z porządnymi 2 GB. Osiem lat później to potwór ważący 60 GB z podfolderami wp-content/uploads/2018/02/, których nikt nie tknął od dnia ich utworzenia. Wtyczka do stagingu nadal działa. Klon nadal się kończy. Tyle że trwa to znacznie dłużej, niż powinno, pożera spory kawałek dysku i po cichu zamienia proces jednego kliknięcia w przerwę na kawę.
To jest ten ukryty koszt. I warto go naprawić, bo rozwiązanie jest — szczerze mówiąc — całkiem nudne, kiedy już je zobaczysz.
Dlaczego wp-content/uploads to podatek od stagingu, o którym nikt nie mówi
Tak naprawdę wygląda przeciętna instalacja WordPressa od podszewki. Rdzeń to może 50 MB. Wtyczki i motywy razem, nawet przy rozbudowanej agencyjnej konfiguracji, rzadko przekraczają 500 MB. Baza danych witryny z dużą ilością treści może w górnej granicy sięgać 200-400 MB.
A potem jest wp-content/uploads. Na pięcioletniej witrynie WooCommerce ten folder z łatwością osiąga 20-50 GB. Na witrynie wydawniczej z dużą ilością mediów lub witrynie członkowskiej ponad 100 GB nie jest niczym niezwykłym. Widziałem witryny klientów, gdzie uploads stanowi 98 % całego śladu WordPressa. Pozostałe 2 % to wszystko, co rzeczywiście zmienia się między wdrożeniami.
Wtyczki do stagingu muszą sobie z tym wszystkim radzić. Nawet gdy WP Staging Pro wykonuje swoją pracę perfekcyjnie, kopiując bazę danych w sekundy i pomijając wykluczone foldery z chirurgiczną precyzją, w chwili gdy każesz mu sklonować całą witrynę do recenzji klienta, prosisz swój serwer o zduplikowanie każdego JPEG-a z 2019 roku.
Przekłada się to na cztery realne koszty:
- Miejsce na dysku. Witryna 60 GB sklonowana do stagingowej subdomeny zajmuje teraz 120 GB na dysku. Dwa środowiska stagingowe? 180 GB. Większość hostingów współdzielonych, a nawet zarządzanych, liczy sobie za to BARDZO DUŻO.
- Czas klonowania. Kopiowanie bazy danych jest szybkie. Kopiowanie plików jest ograniczone przez operacje we/wy twojego serwera. Folder uploads o rozmiarze 60 GB to zadanie we/wy na 60 GB, niezależnie od tego, jak dobra jest twoja wtyczka.
- Waga kopii zapasowych. Każda kopia zapasowa każdej witryny stagingowej ponownie archiwizuje każdy obraz, jaki kiedykolwiek wgrałeś. Przechowywane w miejscach docelowych w chmurze, robi się to kosztowne.
- Obciążenie poznawcze. „Nie klonuj teraz witryny stagingowej, czekam, aż skończy się kopia zapasowa" to zdanie, które słyszałem, w takiej czy innej formie, w każdej agencji, z którą pracowałem.
Nic z tego nie jest winą WP Staging Pro. To problem biblioteki mediów przebrany za staging.
Co WP Staging Pro naprawdę obsługuje znakomicie

Zanim przejdziemy do strony mediów, warto być szczerym co do tego, w czym WP Staging Pro jest świetny. Bo sednem tego wpisu nie jest „wtyczki do stagingu są wolne" — nie są, te nowoczesne są niezwykłe. Sednem jest to, że części, które są wolne, się przesunęły.
WP Staging Pro zajmuje się trudnymi częściami stagingu z bardzo małą ilością dramatu:
- Klonowanie bazy danych z selektywną obsługą tabel, co jest — szczerze mówiąc — tą częścią stagingu, która kiedyś psuła wszystko. Tabele są kopiowane z poprawnym przepisaniem prefiksu, a dane serializowane są obsługiwane prawidłowo.
- Klonowanie witryny jednym kliknięciem do podkatalogu lub subdomeny, z uwierzytelnianiem użytkownika, żeby kopia stagingowa nie została przypadkowo zaindeksowana ani otwarta.
- Synchronizacja wtyczek i motywów między stagingiem a produkcją, dzięki czemu agencja może przetestować aktualizację wtyczki w izolacji i odesłać działającą wersję bez niszczenia zmian klienta.
- Kopie zapasowe z miejscami docelowymi w chmurze, w tym Google Drive, Amazon S3, Dropbox, OneDrive, Wasabi, pCloud, DigitalOcean Spaces, generycznym magazynem zgodnym z S3 oraz SFTP. To część, którą większość niedocenia. Zaplanowany potok kopii zapasowych do S3 to naprawdę funkcja klasy korporacyjnej.
- Kuloodporne przywracanie, funkcja, której nie docenisz aż do dnia, w którym jej potrzebujesz. Kopia zapasowa jest warta tyle, ile potrafisz z niej przywrócić. WP Staging Pro przywraca czysto nawet wtedy, gdy sam WordPress jest zepsuty i nie możesz zalogować się do wp-admin. Istnieje samodzielne narzędzie do przywracania, które działa niezależnie od twojej instalacji WordPressa, dokładnie na sytuacje, gdy wszystko poszło nie tak. Jeśli twoja witryna padnie o 2 w nocy, to ta funkcja przywróci cię do sieci.
- Obsługa multisite, czyli tam, gdzie historycznie każde inne narzędzie do stagingu po cichu się wykładało.
- Migracja witryny między hostami i domenami, z automatycznie obsługiwanym znajdź-i-zamień.
Wtyczka jest zbudowana dla witryn dowolnej wielkości, w tym instalacji ponad 50 GB, a architektura jest naprawdę imponująca, gdy zagłębisz się w to, jak dzieli operacje na bloki, by uniknąć timeoutów PHP. Dla wszystkiego, co jest w bazie danych, folderze wtyczek i folderze motywów, to problem rozwiązany.
Folder wp-content/uploads to miejsce, w którym rozmowa robi się ciekawa.
Dlaczego „po prostu wyklucz folder uploads" nie jest prawdziwą odpowiedzią

Oczywistym ruchem jest powiedzenie WP Staging Pro, by pominął wp-content/uploads podczas klonowania. Wtyczka na to pozwala i dla niektórych procesów pracy to słuszny wybór.
Dla większości procesów nie jest. Oto dlaczego.
Jeśli twoja witryna stagingowa nie ma mediów produkcyjnych, każda strona, którą podglądasz, wygląda na zepsutą. Główny obraz na stronie startowej to placeholder. Galerie produktów WooCommerce to błędy 404. Obrazy wyróżniające się nie renderują. Cały sens stagingu to zobaczyć to, co widzi produkcja, a witryna stagingowa bez mediów nie pozwala ci z przekonaniem zatwierdzić zmiany.
Niektóre zespoły obchodzą to montowaniami NFS, dowiązaniami symbolicznymi lub zadaniami rsync działającymi obok klonu stagingowego. Działają. Są też kruche, zależne od hosta i ponownie wprowadzają dokładnie ten rodzaj ręcznej konfiguracji, którą wtyczki do stagingu miały wyeliminować.
Jest czystsza odpowiedź, która działa niezależnie od tego, ile kopii stagingowych utworzysz, i nie wymaga żadnego skryptowania na poziomie hosta.
Przenieś media całkowicie poza WordPressa
Zmiana, która naprawdę rozwiązuje problem, polega na tym, by przestać traktować media WordPressa jako część witryny. Przenieś je do obiektowego magazynu w chmurze, serwuj przez CDN i pozwól, by WordPress trzymał wskaźniki zamiast plików.

Właśnie to robi Infinite Uploads. Przenosi wszystkie obrazy, filmy i pliki z twojej Biblioteki mediów z serwera hostingowego do chmury, a potem dba o to, by twoja witryna nadal serwowała je odwiedzającym błyskawicznie z serwerów na całym świecie. Pomyśl o tym jak o przeniesieniu szafek na akta z biura do magazynu bliżej twoich klientów. Pliki nadal należą do ciebie. Po prostu nie mieszkają już na twoim serwerze hostingowym, co oznacza, że twoja witryna staje się lżejsza, szybsza i znacznie tańsza w tworzeniu kopii zapasowych.
Dla codziennej pracy witryny rezultat jest taki, że WordPress się nie zmienia. Redaktorzy wgrywają obrazy tak samo. Biblioteka mediów wygląda normalnie. Adresy URL działają. SEO się nie psuje, bo przepisywanie jest obsługiwane na poziomie bazy danych, a stare adresy URL są zachowane.
Dla procesów stagingowych w szczególności trzy rzeczy zmieniają się w użyteczny sposób:
Klon stagingowy staje się nieważki. Gdy wp-content/uploads to 200 MB placeholderów wskazujących na magazyn w chmurze zamiast 60 GB prawdziwych JPEG-ów, WP Staging Pro nie ma po stronie mediów prawie nic do skopiowania. Czas klonowania spada z „idź po kawę" do „chwila, już gotowe?", bo wtyczka robi teraz to, do czego została stworzona — kopiuje te części witryny, które rzeczywiście się zmieniają.
Staging i produkcja współdzielą tę samą bibliotekę mediów. Gdy klonujesz, kopia stagingowa wskazuje na ten sam magazyn w chmurze co produkcja. Każdy istniejący obraz, film i PDF ładuje się na stagingu bez kopiowania ani jednego pliku. Bez zadania synchronizacji, bez czekania na zakończenie transferu 60 GB, bez na wpół zepsutego podglądu, w którym brakuje głównego obrazu. Infinite Uploads przetestował ten proces pracy specjalnie z WP Staging Pro i potwierdził, że połączenie przetrwa zarówno klonowanie, jak i odsyłanie zmian z powrotem na produkcję.
Kopie zapasowe przestają być ciężkie pod względem magazynu. Zaplanowana kopia zapasowa WP Staging Pro bazy danych, wtyczek i motywów jest na tyle mała, że trafia na Google Drive w sekundy. Media są już zabezpieczone na warstwie magazynu w chmurze i nie muszą być archiwizowane w każdym snapshocie WordPressa. Koszty magazynu spadają. Czasy przywracania spadają. Harmonogramy mogą działać co godzinę, a nikt tego nie zauważy.
Połączony proces pracy w praktyce
To, jak wygląda zestawienie obu wtyczek razem, jest dość proste.
Produkcja korzysta z WP Staging Pro do kopii zapasowych, migracji i okazjonalnego klonu stagingowego. Ta sama witryna korzysta z Infinite Uploads, by utrzymywać bibliotekę mediów odciążoną i serwowaną przez CDN. Twoi redaktorzy nie wiedzą, że którakolwiek z wtyczek istnieje. Wgrywają obrazy, klikają opublikuj i wszystko działa.
Gdy potrzebujesz witryny stagingowej do przetestowania aktualizacji wtyczki lub podglądu przeprojektowania, klikasz klonuj w WP Staging Pro. Wtyczka kopiuje bazę danych, folder wtyczek i folder motywów. Folder uploads to cienka skorupa odwołań, więc kopiuje się w sekundy. Nowa witryna stagingowa wstaje, wskazując na te same media w chmurze co produkcja, co oznacza, że każda strona renderuje się poprawnie bez żadnego z ciężaru dyskowego.
Gdy praca jest skończona i odsyłasz zmiany na produkcję, WP Staging Pro obsługuje scalenie bazy danych i kodu. Media nigdy nie musiały się przemieszczać, bo nigdy tak naprawdę nie były na żadnym z serwerów.
Gdy kopie zapasowe działają według harmonogramu, są snapshotami bazy-danych-i-kodu, więc są małe, szybkie i tanie w przechowywaniu. Media mają własną redundancję na warstwie magazynu w chmurze, co i tak jest naprawdę bardziej niezawodne niż pakowanie wszystkiego do archiwum .wpstg raz dziennie.
To jest stack, który nowoczesna agencja WordPress powinna uruchamiać na każdej witrynie powyżej 5 GB. WP Staging Pro do bazy danych, wtyczek, motywów i migracji. Infinite Uploads do mediów. Każda wtyczka robi to, co potrafi najlepiej, żadna nie wchodzi drugiej w drogę.
Co się zmienia, gdy stack jest właściwy
Metryki, które mają znaczenie dla agencyjnych procesów pracy, przesuwają się w sposób łatwy do zmierzenia.
Klony stagingowe, które kiedyś trwały 20 minut, kończą się w niecałe dwie. Zużycie dysku na serwerze źródłowym spada o 80-95 % na witrynach z dużą ilością mediów. Zaplanowane kopie zapasowe przestają padać na limitach pamięci, bo nie próbują już archiwizować katalogu 50 GB. Rachunki za hosting spadają na planach, gdzie magazyn jest rozliczany. Środowiska podglądu dla klientów można uruchamiać od niechcenia, zamiast planować je wokół obciążenia serwera.
A część najtrudniejsza do ujęcia w liczbach — proces stagingu przestaje być projektem. Staje się tym, czym miał być od początku, czyli rutynowym kliknięciem, które pozwala publikować z przekonaniem.
WP Staging Pro uczynił staging przystępnym. Infinite Uploads utrzymuje go takim w miarę, jak twoje witryny rosną.
Trzymaj swój stack w ryzach. Nie pozwól, by folder uploads pożarł proces pracy.