Regeneracja miniatur - kiedy jej potrzebujesz i jak jej nie zawiesić
Publikacja: · Grzegorz Rapczyński
PrestaShop nie pokazuje oryginalnych zdjęć - pokazuje ich pomniejszone wersje, osobne dla listy produktów, karty, podglądu i koszyka. Jeden produkt z pięcioma zdjęciami to kilkanaście albo kilkadziesiąt plików na dysku.
Regeneracja tworzy je wszystkie od nowa. Przy stu produktach to chwila. Przy pięciu tysiącach to operacja, którą trzeba zaplanować - bo potrafi obciążyć serwer na tyle, że sklep przestanie odpowiadać klientom.
Kiedy jest naprawdę potrzebna
Cztery sytuacje, w których nie ma innego wyjścia:
- Po migracji, gdy przeniosły się oryginały, a miniatury nie. Objaw: karta produktu pokazuje duże zdjęcie, lista kategorii puste ramki. Opisałem to szerzej przy znikających zdjęciach po przeniesieniu sklepu.
- Po zmianie szablonu, który używa innych rozmiarów obrazków niż poprzedni.
- Po dodaniu nowego formatu obrazka w ustawieniach - wtedy wystarczy wygenerować tylko ten jeden.
- Gdy miniatury są rozmyte albo mają złe proporcje po zmianie ustawień przycinania.
I jedna sytuacja, w której ludzie ją uruchamiają niepotrzebnie: gdy zdjęcia się nie wyświetlają. Zanim puścisz regenerację, sprawdź, czy pliki w ogóle są na serwerze i czy serwer je oddaje. Regeneracja z brakujących oryginałów nie stworzy niczego, a zajmie godziny.
Dlaczego się przerywa
To jedna z najcięższych operacji, jakie sklep potrafi wykonać. Każde zdjęcie trzeba wczytać do pamięci, przeskalować kilka razy i zapisać. Przy dużym katalogu uderza w oba limity naraz: czas wykonania i pamięć.
Objaw jest charakterystyczny: pasek postępu dochodzi mniej więcej do tego samego miejsca i staje. Za każdym razem w podobnym punkcie, bo za każdym razem kończy się ten sam limit.
Jak to przeprowadzić, żeby doszło do końca
- Zrób kopię katalogu ze zdjęciami. Regeneracja nadpisuje istniejące miniatury - jeśli coś pójdzie nie tak, wracasz do stanu sprzed.
- Wybierz porę najniższego ruchu. Operacja obciąża serwer, a klienci odczuwają to jako spowolnienie całego sklepu.
- Generuj po jednym formacie naraz, jeśli sklep na to pozwala, zamiast wszystkich jednocześnie.
- Nie zaznaczaj usuwania starych obrazków przy pierwszym podejściu. Ta opcja kasuje istniejące miniatury na początku - jeśli operacja się przerwie, zostaniesz bez jednych i bez drugich.
- Nie zamykaj karty przeglądarki w trakcie. Przy klasycznym uruchomieniu z panelu zamknięcie okna przerywa całość.
Jeśli mimo to się przerywa, zostaje najskuteczniejsza metoda: podniesienie limitów na czas operacji albo uruchomienie jej z konsoli serwera, gdzie limit czasu wykonania zwykle nie obowiązuje. To drugie wymaga dostępu, którego nie każdy hosting udziela.
Ile to trwa i co z tym zrobić
Jeśli operacja przerywa się zawsze w tym samym momencie, przyczyną są limity serwera - ten sam mechanizm, który zatrzymuje import produktów w połowie.
Czas zależy od liczby zdjęć, liczby formatów i mocy serwera - przy kilku tysiącach produktów mówimy o godzinach, nie minutach. Dwie rzeczy, które realnie go skracają:
- Usunięcie nieużywanych formatów obrazków. Sklepy po zmianach szablonów potrafią mieć kilkanaście zdefiniowanych rozmiarów, z których połowa nie jest już nigdzie używana. Każdy z nich to osobny plik na każde zdjęcie.
- Rozsądne oryginały. Zdjęcia w rozdzielczości aparatu przeskalowują się wielokrotnie dłużej niż przygotowane wcześniej. Pisałem o tym w tekście o zdjęciach produktów do sklepu.
Czego nie robić
- Nie puszczaj regeneracji w szczycie sprzedaży. Sklep spowolni dla wszystkich.
- Nie uruchamiaj jej dwa razy równolegle w dwóch kartach. To najszybszy sposób na położenie serwera.
- Nie kasuj katalogu z miniaturami ręcznie w nadziei, że sklep odtworzy je sam. Odtworzy, ale dopiero przy regeneracji - a do tego czasu sklep będzie bez obrazków.
Jeśli po regeneracji klienci dalej widzą stare zdjęcia, problem leży już poza miniaturami - w warstwach cache, z których część jest po stronie serwera, a nie sklepu.
Najczęstsze pytania
Czy regeneracja może pogorszyć jakość zdjęć?
Może, jeśli oryginały zostały wcześniej nadpisane pomniejszonymi wersjami. Miniatura nigdy nie będzie lepsza niż plik, z którego powstaje.
Da się zregenerować miniatury tylko dla części produktów?
Standardowo operacja obejmuje cały katalog. Obejście polega na tymczasowym ograniczeniu liczby formatów - przy większych katalogach zwykle i tak trzeba to podzielić inaczej.
Ile miejsca na dysku zajmują miniatury?
Przy kilku formatach i kilku zdjęciach na produkt zwykle więcej niż same oryginały. To jedna z głównych przyczyn niespodziewanego zapełnienia dysku w rosnącym sklepie.
Regeneracja nie chce dojść do końca
Przy dużym katalogu to zwykle kwestia limitów albo nadmiaru zdefiniowanych formatów. Napisz - sprawdzę jedno i drugie i puszczę to tak, żeby doszło. Formularz kontaktowy, 881 932 088 lub kontakt@grvision.pl.