Skocz do zawartości


Zdjęcie

[Tips & Tricks] Porady


  • Zaloguj się, aby dodać odpowiedź
31 odpowiedzi w tym temacie

#1 nightcom

nightcom

    Zaawansowany

  • Members
  • PipPipPip
  • 105 postów
  • LocationPoznań

Napisano 30 sierpień 2010 - 00:15

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;

Resources for Newbies: RTFM!!

#2 emils

emils

    Zaawansowany

  • Members
  • PipPipPip
  • 358 postów

Napisano 31 styczeń 2011 - 12:13

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.

#3 Mistrz Yoda

Mistrz Yoda

    Ekspert

  • Members
  • PipPipPipPip
  • 1439 postów
  • LocationOstrołęka
  • PrestaShop:1.2, 1.4

Napisano 31 styczeń 2011 - 19:26

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.
Uwaga: Rady tego użyszkodnika mogą być niebezpieczne dla Twojego komputera, względnie doprowadzić mogą do zwapnienia poszycia nośnika dysku twardego lub preizolowanych połączeń magistrali głównej w wyniku procesów iniekcji kodu SQL H2O.

#4 emils

emils

    Zaawansowany

  • Members
  • PipPipPip
  • 358 postów

Napisano 31 styczeń 2011 - 23:39

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ć)?!

#5 Mistrz Yoda

Mistrz Yoda

    Ekspert

  • Members
  • PipPipPipPip
  • 1439 postów
  • LocationOstrołęka
  • PrestaShop:1.2, 1.4

Napisano 01 luty 2011 - 09:35

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....
Uwaga: Rady tego użyszkodnika mogą być niebezpieczne dla Twojego komputera, względnie doprowadzić mogą do zwapnienia poszycia nośnika dysku twardego lub preizolowanych połączeń magistrali głównej w wyniku procesów iniekcji kodu SQL H2O.

#6 sokon

sokon

    Zaawansowany

  • Members
  • PipPipPip
  • 108 postów
  • LocationCzeladź

Napisano 20 luty 2011 - 10:06

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.

#7 dawwid

dawwid

    Początkujący

  • Members
  • Pip
  • 2 postów

Napisano 24 luty 2011 - 13:07

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;

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/

#8 emils

emils

    Zaawansowany

  • Members
  • PipPipPip
  • 358 postów

Napisano 24 luty 2011 - 13:14

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.

#9 dawwid

dawwid

    Początkujący

  • Members
  • Pip
  • 2 postów

Napisano 25 luty 2011 - 11:02

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

#10 ircykk

ircykk

    Administrator

  • Administrators
  • 4997 postów
  • PrestaShop:1.5, 1.6

Napisano 25 luty 2011 - 11:05

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.

#11 emils

emils

    Zaawansowany

  • Members
  • PipPipPip
  • 358 postów

Napisano 25 luty 2011 - 11:06

Ja mam 1mb i chodzi dobrze. Bez rewelacji, ale tak jak powinno. Zobacz za to jak chodzi moja strona www.es-mot.pl Na pewno wolniej, więc nie masz się co przejmowac ;)

#12 Mistrz Yoda

Mistrz Yoda

    Ekspert

  • Members
  • PipPipPipPip
  • 1439 postów
  • LocationOstrołęka
  • PrestaShop:1.2, 1.4

Napisano 25 luty 2011 - 15:14

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.
Uwaga: Rady tego użyszkodnika mogą być niebezpieczne dla Twojego komputera, względnie doprowadzić mogą do zwapnienia poszycia nośnika dysku twardego lub preizolowanych połączeń magistrali głównej w wyniku procesów iniekcji kodu SQL H2O.

#13 ircykk

ircykk

    Administrator

  • Administrators
  • 4997 postów
  • PrestaShop:1.5, 1.6

Napisano 25 luty 2011 - 15:47

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.

#14 Mistrz Yoda

Mistrz Yoda

    Ekspert

  • Members
  • PipPipPipPip
  • 1439 postów
  • LocationOstrołęka
  • PrestaShop:1.2, 1.4

Napisano 25 luty 2011 - 16:23

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.
Uwaga: Rady tego użyszkodnika mogą być niebezpieczne dla Twojego komputera, względnie doprowadzić mogą do zwapnienia poszycia nośnika dysku twardego lub preizolowanych połączeń magistrali głównej w wyniku procesów iniekcji kodu SQL H2O.

#15 sokon

sokon

    Zaawansowany

  • Members
  • PipPipPip
  • 108 postów
  • LocationCzeladź

Napisano 13 marzec 2011 - 17:13

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!!

#16 emils

emils

    Zaawansowany

  • Members
  • PipPipPip
  • 358 postów

Napisano 13 marzec 2011 - 17:37

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...

#17 sokon

sokon

    Zaawansowany

  • Members
  • PipPipPip
  • 108 postów
  • LocationCzeladź

Napisano 13 marzec 2011 - 17:43

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...

#18 Mistrz Yoda

Mistrz Yoda

    Ekspert

  • Members
  • PipPipPipPip
  • 1439 postów
  • LocationOstrołęka
  • PrestaShop:1.2, 1.4

Napisano 13 marzec 2011 - 19:25

...większość wiedziała... :D Swego czasu na prestashop.com trąbiono.
Uwaga: Rady tego użyszkodnika mogą być niebezpieczne dla Twojego komputera, względnie doprowadzić mogą do zwapnienia poszycia nośnika dysku twardego lub preizolowanych połączeń magistrali głównej w wyniku procesów iniekcji kodu SQL H2O.

#19 marcinsz101

marcinsz101

    Początkujący

  • Members
  • Pip
  • 8 postów

Napisano 05 kwiecień 2011 - 21:12

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)

#20 s.s3

s.s3

    Początkujący

  • Members
  • Pip
  • 2 postów

Napisano 27 kwiecień 2011 - 07:37

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?




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych

Hosting zapewnia: Hekko.pl