Skocz do zawartości

Rekomendowane odpowiedzi

Brakuje mi takiego tematu na forum :) może nie tylko mi, a mianowicie rozchodzi się o kwestię usprawnienia PrestaShop po instalacji i konfiguracji. Jeśli ktoś zna jakieś ciekawe sposoby na optymalizacje/przyśpieszenie sklepu proszę dołączyć wątek.

 

Włączenie Smarty caching.

 

Jak już zakończymy edycję sklepu, i nasza templatka będzie gotowa (nie będziemy wprowadzać zmian w wyglądzie) można włączyć Smarty cache.

 

szukamy pliku /tools/smarty/Smarty.class.php

mniej więcej na wysokości linijki 145

var $compile_check = true;var $force_compile = false;car $caching  = 0;

zamienić na:

 

var $compile_check = false;var $force_compile  = false;var $caching    = 1;
Po tym zabiegu Smarty będzie sprawdzał raz na godzinę zmiany w templatce, przekompiluje i umieści pliki cache w osobnym katalogu. Jeśli templatka się nie zmieni Smarty nie będzie rekompilował.

 

Warto także włączyć cache ze strony przeglądarki, czyli żeby strona wczytywała się z cache'u przeglądarki zamiast wczytywać się ponownie z serwera. Mniej więcej na wysokości linijki 149

var $cache_modified_check   = false;

zamienić na:

 

var $cache_modified_check   = true;

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Ja zrobiłem coś takiego, że pousuwałem zbędne fotki itp. Wywaliłem szablon domyślny, do tego w folderze innego szablonu niepotrzebne fotki.Myślę, że wiem co obciąża też prestę: zauważyłem, ze w głównym folderze sklepu w katalogu /img/p mamy zdjęcia wszystkich produktów.Nic w tym dziwnego, tylko zdjęcia są w kilku rozmiarach, tzn:fotka1fotka1-homefotka1-largefotka1-mediumfotka1-smallfotka1-watermarkfotka1-thickboxPrzy małej ilości produktów nie robi to większej różnicy, ale sam katalog otwierał się bardzo długo.Więc mam pytanie-czy można to jakoś usprawnić? Tzn, czy te wszystkie rozmiary są potrzebne, czy może wystarczy zostawić chociazby połowę? Napewno chociaż troche przyspieszy to sklep.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Z punktu widzenia dostępu do danych serwera nic nie przyśpieszy usunięcie plików - serwer pyta o konkretne dane które i tak są indeksowane. To tak jak z baza SQL - bazy mają po 200MB a dostęp do danych zajmuje 0.0003sek.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

może źle rozumuje, ale:skoro presta nie tak dobrze radzi sobie z wymianą danych (presta<>baza), to po zmniejszeniu bazy powinno być szybsze, czyż nie?Skoro nie potrafimy narazie skrócić czasu dostępu do bazy, zajśc to od drugiej strony i skrócić bazę (zmniejszyć)?!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dane w bazie są indeksowane. Dostęp do bazy to już kwestia serwera bazy ale mimo wszystko to są tysięczne ułamki sekund.Natomiast fakt - im danych mniej w polu indeksowanym i im mniej odpytań - tym szybszy dostęp.Zupełnie inna sprawa to serwer i zasoby dla użyszkodnika. Te są dzielone dynamicznie, ale mimo to firmy stosują "represje" dla heavy users.Jak długo otwiera się Twój sklep? Jeśli przeglądarka go zkeszowała więc powinieneś mieć wynik poniżej 0.1 sek - tyle powinno trwać wysłanie zapytania i odebranie danych. Reszta czasu to praca z cache Twojej przeglądarki - im wolniejszy komputer tym wolniejszy "dostęp".Jeśli przeglądarka nie zkeszowała strony, to gro czasu zajmują odpytania i dostęp do poszczególnych elementów - typów plików. A przecież jest jeszcze taka zmienna jak łącze a strona przecież swoje waży. Np moja przy pierwszym keszowaniu to jedynie ;) 1.2MB - na wolnych łączach to główny element, że klient czeka....

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jako, że temat ciekawy to podrzucę ciekawe info:

 

Produkty polecane na stronie głównej wyświetlają się tylko jeśli są w kategorii głównej. A jeśli chcielibyśmy aby wyświetlane były produkty z innej kategorii?? Wystarczy w pliku "homefeatured.php" znaleźć w okolicach linii 67 taki kawałek kodu:

<span class="syntaxdefault">$category </span><span class="syntaxkeyword">= new </span><span class="syntaxdefault">Category</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">);  </span><span class="syntaxdefault"></span>
W nawiasie jest numer kategorii z której pobierane są produkty do wyświetlania w polecanych na stronie głównej. Możemy wpisać tu dowolny numer kategorii.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Brakuje mi takiego tematu na forum :) może nie tylko mi, a mianowicie rozchodzi się o kwestię usprawnienia PrestaShop po instalacji i konfiguracji. Jeśli ktoś zna jakieś ciekawe sposoby na optymalizacje/przyśpieszenie sklepu proszę dołączyć wątek.Włączenie Smarty caching.Jak już zakończymy edycję sklepu, i nasza templatka będzie gotowa (nie będziemy wprowadzać zmian w wyglądzie) można włączyć Smarty cache.szukamy pliku /tools/smarty/Smarty.class.phpmniej więcej na wysokości linijki 145

var $compile_check = true;var $force_compile = false;car $caching  = 0;
zamienić na:
var $compile_check = false;var $force_compile  = false;var $caching    = 1;
Po tym zabiegu Smarty będzie sprawdzał raz na godzinę zmiany w templatce, przekompiluje i umieści pliki cache w osobnym katalogu. Jeśli templatka się nie zmieni Smarty nie będzie rekompilował.Warto także włączyć cache ze strony przeglądarki, czyli żeby strona wczytywała się z cache'u przeglądarki zamiast wczytywać się ponownie z serwera. Mniej więcej na wysokości linijki 149
var $cache_modified_check   = false;
zamienić na:
var $cache_modified_check   = true;
niestety wykonałem te działania i sklep nie pojawia się w ogole. Przywróciłem do poprzedniego stanu. Moj ogólny problem polega na tym, że sklep ma fatalną prędkość działania. Co byście poradzili?Jak coś: http://www.sklep-komputerowy.konin.pl/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie przesadzaj ;)Fatalna prędkość to jakby Ci się strona wczytywała 15sek.Tak już ma presta, że troche muli, ale to normalne. Ile masz produktów? Ja mam u siebie 1000 i troche siadło, ale nie jest najgorzej, bo średni czas wczytywania strony to 3-4sek.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Moja neo 6 mega ledwo żyje ładując to. Mówię fatalnie jako, że może przeglądać to ktoś posiadający 2mb czy nawet mega i czeka i czeka i czeka...A czemu sposoby podane powyżej nie zadziałały? mam presta 1.3

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Szybkość internetu nie ma znaczenia, czasochłonne są zapytania do bazy i praca serwera a nie ilość wysyłanych danych. Mylisz zupełnie pojęcia.

Zupełnie się z Tobą nie zgadzam, co więcej nie masz racji w temacie łącza.

Po pierwsze: Powiedz mi ile nanosekund zajmują wszystkie zapytania do bazy przy otwarciu index.php.

Po drugie: Zakładając natychmiastowe odpowiedzi przy wyłączonych połączeniach półotwartych, oraz pełne wykorzystanie pasma transfer strony która waży 1.2MB będzie trwał na łączu 512kbps - 19 sekund, 1024kbps - 9.6 sekundy a na łączu 6mb - 1.6 sekundy.

Po trzecie: Przeglądarki mają ustawiony limit zapytań i ten limit również spowalnia.

Po czwarte: Spowalnia również "setka" plików css i js (w nawiązaniu do punktu trzeciego)

Po piąte: brak włączonego cache i lifetime dla poszczególnych typów plików w cache to konieczność pobierania ich z serwera.

Po szóste: Komputer "kliencki" nawet przy włączonym cache jeśli jest wolny to odczyt z cache również jest wolny (zawsze gdzieś występuje wąskie gardło). Jednak odczyt z cache wolnego komputera będzie znacznie szybszy niż całościowe przeładowanie strony.

 

Zastosowanie "dopalania" poprzez wyeliminowanie setek css i js, włączenie gzipa i cacheowania z lifetime skraca odpowiedź z serwera do poniżej 0.2 sekundy! (dwie dziesiąte sekundy - to baaaaardzo szybko) Standardowo przeładowując kolejną podstronę wynik powinien być maksymalnie 5-ciokrotnie dłuższy - czyli poniżej 1 sekundy.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Rozumiem cię może źle się wyraziłem oczywiście wszystko ma wpływ. Ale w przypadku presty nie to jest najważniejsze.Dlaczego inne systemy działają szybciej niż presta skoro mają tyle samo lub więcej grafiki, css itp na tym samym łączu?Różnica ta wynika z pracy po stronie serwera php i bazy mysql. Wynik jaki jest wysyłany z serwera do przeglądarki jest podobny w przypadku niemal każdego systemu. Widać to dosadnie przy dużej ilości przedmiotów np 10 000 przedmiotów w preście spowalnia ją do nawet 5s, natomiast chociażby opencart przy takiej ilości to mniej niż 1s. Gdyby to grafika i css były problemem czas dostępu byłby niezależny od ilości przedmiotów a tak nie jest... przecież mając 10 000 przedmiotów pobieramy dokładnie tyle samo danych co w przypadku 10 a czas dostępu jest 5x dłuższy.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Cóż... do 10000 produktów brakuje mi tylko 7400 :) więc postaram się podzielić obserwacjami gdy będę się zbliżał do tego limitu. Zresztą jeśli policzyć możliwe kombinacje - razy kolory razy rozmiary to mam ich znacznie więcej.

Jednak ja widzę tu jedną (pewną) niekonsekwencję - otóż Presta - nie wiem dlaczego, nie stosuje sprawdzonych rozwiązań i tak w przypadku bazy SQL jak również owej "setki" nadmiarowych plików.

Idąc dalej są działania które przyśpieszają to na co jeszcze mamy wpływ: cache, gzip, lifetime. Poza tym już kiedyś stosowało się rozwiązania które łączyło wszystkie pliki css i js w jeden (w cache - oczywiście oddzielnie js i css ;) ) i to żeby było śmieszniej w automacie.

Problem z bazą niekoniecznie leży po stronie (tu się zgodzę) licho pomyślanej bazy SQL Presty. Może również leżeć po stronie serwera bazy a dokładnie jego limitów.

Ilość jednorazowych zapytań jest ściśle związana z tanią ofertą a nie wszystkie "firmy" informują o tych limitach swoich klientów i potem jest "łoooolaboga".

 

Wpisałem w gugiela "Powered by OpenCart" i sprawdziłem pierwsze 6 pozycji - wszystkie mają cache włączony z lifetime dla poszczególnych typów plików - a presta nie... i upierając się to jest powód dlaczego szybciej chodzi opencart.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wiedzieliście, że w Preście można sortować kategorie??

Standardowo Presta ustawia kategorie alfabetycznie, jednak możemy zmienić kolejność:

Wchodzimy do edycji kategorii i przed nazwą podajemy jej pozycję z kropką: np. 01.Zabawki - kategoria zabawki będzie wyświetlana na pierwszej pozycji - OCZYWIŚCIE CYFRY NIE BĘDĄ WIDOCZNE!!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

dzięki sokon. A ja się tyle męczyłem, żeby wysortować kategorie po ID (musiałem kolejno wpisywać daną kategorie, dzięki czemu sortowałem po numerze ID).Jak widać czasem najprostsze rzeczy są najtrudniejsze do znalezienia...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Funkcja ta jest ukryta w kodzie i nikt o niej nie pisał, ciekawe ile jest osób które znały ten patent ;-) Przypadkiem ją odkryłem buszując po kodzie Presty...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Kopia z innego tematu

"Na chwile obecna w prescie jest tak że jezeli produkt A powiążemy z produktem B to to powiązanie jest jedno stronne. Jeżeli chcemy aby automatycznie na stronie produktu B było pokazane ze jest on powiązany z A to w classes/Product.php w funkcji

 

<span class="syntaxdefault">foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$accessories_id as $id_product_2</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">  </span>
dodajemy linie

<span class="syntaxdefault">Db</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">getInstance</span><span class="syntaxkeyword">()-></span><span class="syntaxdefault">AutoExecute</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">_DB_PREFIX_</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'accessory'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'id_product_1'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(int)(</span><span class="syntaxdefault">$id_product_2</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> </span><span class="syntaxstring">'id_product_2'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(int)(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">id</span><span class="syntaxkeyword">)),</span><span class="syntaxdefault"> </span><span class="syntaxstring">'INSERT'</span><span class="syntaxkeyword">);</span><span class="syntaxdefault">  </span>
"

 

W przypadku gdy chcemy za jednym razem powiązać produkty A, B, C, D .... każdy z każdym

 

należy dodać jeszcze do tego ten kod

 

<span class="syntaxdefault">    foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$accessories_id as $pomoc</span><span class="syntaxkeyword">){</span><span class="syntaxdefault">            if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$id_product_2</span><span class="syntaxkeyword">!=</span><span class="syntaxdefault">$pomoc</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">            Db</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">getInstance</span><span class="syntaxkeyword">()-></span><span class="syntaxdefault">AutoExecute</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">_DB_PREFIX_</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'accessory'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'id_product_1'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(int)(</span><span class="syntaxdefault">$id_product_2</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> </span><span class="syntaxstring">'id_product_2'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(int)(</span><span class="syntaxdefault">$pomoc</span><span class="syntaxkeyword">)),</span><span class="syntaxdefault"> </span><span class="syntaxstring">'INSERT'</span><span class="syntaxkeyword">);</span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span>
Jest to przydatne gdy produkty powiązane sa zamiennikami w przypadku gdy produkt A jest zamiennikiem produkty B a B jest zamiennikiem C to C musi też być zamiennikiem A wystarczy dodać produkty i w jednym z nich zrobić powiązania a reszta doda się z automatu.

 

Ma ktoś pomysł jak zmodyfikiowac kod i gdzie tak aby przy dodaniu nowego produktu automatycznie byla ustawiona na njego obniżka cenowa dla 5 sztuk 10%? Ponieważ bedzie to dla wszystkich produktów i fajnie jakby mi sie to z automatu robiło. Tzn chodzi mi w które miejsce wkleic kod dodający do tabeli promocji dane(bo sam kod to pikus) tylko nie mogę znalesc funkcji w stylu addNewProduct tak jak funkcji dodającej produkty powiązane(changeAccessories)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wiedzieliście, że w Preście można sortować kategorie??

Standardowo Presta ustawia kategorie alfabetycznie, jednak możemy zmienić kolejność:

Wchodzimy do edycji kategorii i przed nazwą podajemy jej pozycję z kropką: np. 01.Zabawki - kategoria zabawki będzie wyświetlana na pierwszej pozycji - OCZYWIŚCIE CYFRY NIE BĘDĄ WIDOCZNE!!

Czy to sortowanie będzie działać w preście 1.4.1?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Co do predkości działania, ważne jest by używać pamieci przeglądarki, dla http://sklep-komputerowy.konin.pl/ radził bym umieszczenie w pliku .htaccess nastepujących linii umożliwiających cache zawartości( po przeładowaniu strony użytkownik nie bedzie musiał czekać drugi raz na te same dane), dodatkowo kompresja gzip także jest wskazana i dobrze jest włączyć ją na serwerze

 

<IfModule mod_expires.c>	ExpiresActive On	AddType image/x-icon .ico	ExpiresByType image/gif "access plus 1 month"	ExpiresByType image/jpg "access plus 1 month"	ExpiresByType image/jpeg "access plus 1 month"	ExpiresByType image/png "access plus 1 month"	ExpiresByType text/css "access plus 1 month"	ExpiresByType text/javascript "access plus 1 week"	ExpiresByType application/javascript "access plus 1 week"	ExpiresByType application/x-javascript "access plus 1 week"	ExpiresByType image/x-icon "access plus 1 year"	ExpiresByType image/ico "access plus 1 month"	ExpiresByType text/js "access plus 1 month"</IfModule>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Da się przy pomocy modułu lub htaccess przekierować z wejścia na stronę sklepu na obrazek "strona w budowie"?Kombinuje jak przebudować strone chwilowo ją zamykając, ale nie tracąc dostępu do podglądu strony.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Backoffice > ustawienia > wyłącz skelp(zaznacz) > konserwacja ip (tutaj wpisujemy swoje zewnętrzne ip)Mamy dostep dzieki temu do backoffice(z kazdego ip), i frontoffice(z jednego adresu ip)

No dobra, ale czy w takim układzie będzie obrazek "strona w budowie"? I czy przy zmiennym IP też będę mógł się dostać do front office?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

będzie tak jak masz zrobioną "stronę" maintenance - czyli pewnie masz standardową - więc będzie komunikat że jest przerwa techniczna i takie tam (zależy od tłumaczenia) - Do BO masz dostęp z dowolnego IP a dostęp do FO (miodek wprowadził w błąd) - tu w BO możesz także za każdym razem dodać swój nowy adres IP (można ustawić dowolną ilość adresów IP) i masz dostęp do FO

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



  • Przeglądający

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

  • Statystyki forum

    • Tematów
      7480
    • Postów
      36201
×