Ускоряем Opencart 2.0

Тема в разделе "Инструкции и FAQ", создана пользователем Slait, 26 авг 2015.

  1. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    Я поддерживаю Равиля и ещё хочу добавить: на СЕО этот тест никак не влияет, так как влияет трастовость сайта и удовлетворение потребностей ваших потенциальных постетителей.
    Мне этот тест суют почти каждую неделю "продвинутые в сео" хозяева сайтов.
    Да конечно бывают трешовые сайты, и тогда на тест надо обратить внимание, в 90% случаев это вспомогательный источник инфы, который ничего не будет говорить о пессимизации вашего ресурса. Так как главное обойти трастовость конкурентов, а не паниковать что у вас скрипт вверху....
     
  2. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Все просто, просто время нужно потратить чтобы починить.
    Если это мой был бы сайт, я бы сделал так как сказал)
     
  3. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    чот тема затухла (

    в сторону асинхронной загрузки скриптов никто не смотрит ?

    уборка скриптов в футер люто повышает оценки на всяких пэйджспидах (

    недавно наткнулся на сайт, который у меня настолько моментально загрузился, что я был прям удивлён... head минимальный, всё в футере... к сожалению, это был не опенкартовский движок...

    бутстрап и коммон можно же асинхронно подключить ?
    добавил asynс - вроде всё работает... мошт я туплю и не проверил что?
    с асинком jquery показ картинок накрывается (


    скрипт кнопок addthis прибавляет по секунде-три при загрузке страниц.
    заменил на uptolike

    обращение к css гугла ради шрифтов тоже замедляло загрузку - просто скопировал в хеадер. +
    почему-то перезалить шрифты к себе не вышло.. но я олень, фигли... но так думаю.что это тоже + дало бы.
     
  4. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Скрипты должны подключаться в строгом порядке, для этого есть defer.

    AddThis как раз можно асинхронно если он не использует какую либо библиотеку.

    Все что использует jQery не советуется подгружать асинхронно, как и саму библиотеку.
     
    KirillKern нравится это.
  5. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    Блин ) ну прям реально не хотите тему развивать )))

    Мужики, а что с мемкэшем на двойке ?
    в индексе прописано - кэш file, и в систем/либрари/кэш присутствует file, apc и mem
    можно это как-то использовать под себя ?
     
  6. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Да
     
  7. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    ну просто да. в формате темы как-то - лучшеб промолчать (

    настройки мемкеша прописаны конфиге, как я понимаю. не помню уже откуда они у меня там взялись, мошт пытался чо-то делать в этом направлении.
    насколько помню - на полуторке - мемкеш едва ли не спасение от всех бед.
    на пустом магазе с двойкой переключение на mem чот даёт плюс секунду в gtmetrix (

    хз чо такое apc, как настраивать и использовать... если тупо вписывать в индекс получаю 500.

    Вы бы думали о подрастающих поколениях - тема бы поактивней поднималась.
    Проблем же много.

    та же самая оптимизация запросов ? в инете инфы нет нихрена. нужно быть гуру мускула чтоли чтоб ковырять этот вопрос ? почему гуру не делятся инфой ?
     
  8. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Потому что мы на этом деньги делаем)))
    Почитай про LazyLoading

    Надо вообще будет попробовать сделать кэширование базы данных.
     
  9. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    фига в дебри меня отправили )))
    у меня всё помещается в рамках одной страницы и максимум двух экранов и этот момент не изменится )

    Сейчас бился с обходом мудачества хостаря (запрет кеширования статики посетителем, невозможность управления заголовками, нет ну не мудаки ли ?),
    запихнул все css и js в php(ради управления заголовками) - думаю, не вызовет ли осложнений при реальной нагрузке.

    Хочется сократить количество запросов юзера к серверу. Страницы почти пустого магаза открываются практически моментально.
    что PageSpeed Insights, что gtmetrix дают более высокую оценку чем при использовании нитропаков всяких.

    следущее по идее, что нужно бы - объединение файлов.
    и нужно мне как-то обойти хостаря на тему графики (хз как отдавать граф.файлы из пхп)


    жаба душит, когда столько работы уже проделано даже живой поиск подключать (((
    и прочие скрипты и плюшки - тоже жаба душит. млин ((
     
  10. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Ох..., мне 20, тебе 28...

    1. Сжать все скрипты и стили.
    2. Вынести их ...
    a) Если у тебя лишь одна страница, то вынеси в HTML
    b) Если у тебя куча страниц CSS и JS должны быть в своих файлах.
    3. Правильное подключение скриптов и запуск скриптов
    1) Подключать скрипты в подвале, если их несколько то прописываем их с атрибутом defer, счеткики подключаем асинхронно.
    2) Запускать их при событии DomContentLoaded
    4. Иконки объединяем, тем самым создаем Спрайт, но лучше использовать Font-Awesome или другие.
    5. CSS нужно оптимизировать использую препроцессоры, не знаешь, не сделаешь.
    6. jQuery разделяется на составные части, которые способны работать отдельно от друг друга, надо уметь подключать нужные части.
    7. Лучше использовать чистый JavaScript
    8. Корректные селекторы в скриптах, $(body > #content .block), а не $(.block).
    9. Картинки подгружать через LazyLoading, если есть страница товара, то там не желательно LazyLoading использовать.
    10. Поставить GZIP сжатие
    11. Поставить корректное кэширование в .htaccess

    Вроде, все хотя еще дофига, это все что на ум пока пришло.
     
  11. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    я в 14 зарабатывал первые деньги за "сайтостроение"...
    потом бухал.. и вот только вторую неделю просыхаю...
    лучшие годы моей жизни )

    про jquery и скрипты - не знаешь не сделаешь...селекторы и прочее...
    те же самые спрайты - мне несколько лет вникать чот не хотелось.. на практике оказалось дело одного часа..когда добавил 10картинок с логотипами приёма денюжек.. + 10 запросов к хостингу, который отказывается слушать htaccess - тут и спрайты изучишь...

    стоковый шаблон. можно применительно к нему обсуждать.


    правильно я понимаю. что если у меня на странице нет никаких календарей и счётчиков дат
    Код:
    <!-- spdk --><script defer src="catalog/view/javascript/jquery/datetimepicker/moment.js.php" type="text/javascript"></script>
    <!-- spdk --><script defer src="catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js.php" type="text/javascript"></script>
    вот это можно вырезать вообще ?
    это вот эти плюхи ? (зачем они вообще?)
    Снимок.PNG


    много народа в полуторке парилось из-за подсчёта количества товаров в категориях.
    мол даже отключение в настройках бестолку - сейчас под руками модуль якобы ускорялки двойки - тоже по коду вижу,что вырезают подсчёт товаров - присутствует эта проблема ?


    нет под руками наполненного и работающего магаза на двойке. отсюда некоторые вопросы, к которым хочется быть готовым.
     
    Последнее редактирование: 13 авг 2016
  12. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Да, то атрибут defer, или лучше в один файл.
    Это кнопки.
    Никаких проблем с тормозами не встречал.
     
  13. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    moment.js и bootstrap-datetimepicker.min.js за что они отвечают ?
    если jquery.magnific-popup.min.js, понятно, картиночки красивенько разъезжаются...
    то зачем момент и пикер нужны я так и не понял (

    datetimepicker потом ещё и в коде страницы товара какой-то скрипт мельтишит... зачем он ?


    Что имею на данный момент:
    Снимок.PNG Снимок2.PNG Снимок3.PNG Снимок4.PNG Снимок7.PNG



    Мне жалко, что тема так не активна на форуме. Что мне позарез нужно, что посетителям форума, очевидно же..
    А вы подзабиваете, что я тут клещами всё вытягиваю.
    Больше народа на форуме, больше юзеров сборки, больше выявленных проблем и косяков - лучше продукт получаем.


    С радостью объединил бы css и js чтоб залить посетителю в кэш и он забыл про них. Но чот всего настолько много, что все минификаторы заваливаются...
    Объединение js без анализа кода,я так понимаю, дохлый номер... при том, что в js я не шарю абсолютно..
     
  14. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Один за время, другой за время))
    Один за формат отображения времени и даты, другой за форму выставления даты и времени.
    Это было поставлено для опций с типом date или datetime
    Еще есть скрипт upload, для заливки файлов с сайта на сервер.
    -----
    Более опытные используют LESS/SASS + GULP - для CSS
    Для JS - Webpack
    Почитай, попробуй, скачай IDE, я юзаю PHPStorm

    Учить надо было, а не бухать)
    С возрастом усваивать инфу будет все сложнее.
    У тебя же пару страниц, ничего сложного запихнуть код в функции и запустить их в нужный момент.
     
  15. Edikofff

    Edikofff Новичок

    Сообщения:
    22
    Симпатии:
    1
    Чтобы не грузить хостинг хотел попробовать статическое gzip сжатие.
    Для эксперимента взял bootstrap.min, который сильно не нравился gtmetrix
    сжал его, закинул на сервер, прописал в htaccess Вроде все заработало, сайт у меня без проблем открывается, на самом gtmetrix аплодисменты...но сайт у него в скриншоте без стилей стал. Зашел на webmasters/tools там тоже печальная картина:

    view/javascript/bootstrap/css/bootstrap.min.css
    Таблица стилей Недоступно --
    catalog/view/javascript/font-awesome/css/font-awesome.min.css
    Таблица стилей Недоступно --
    catalog/view/theme/default/stylesheet/stylesheet.css
    Таблица стилей Недоступно --
    catalog/view/javascript/jquery/magnific/magnific-popup.css
    Таблица стилей Недоступно --
    catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css
    Таблица стилей Недоступно --
    catalog/view/theme/default/stylesheet/live_search.css
    Таблица стилей Недоступно --
    catalog/view/javascript/jquery/jquery-2.1.1.min.js
    Скрипт Недоступно --
    catalog/view/javascript/common.js
    Скрипт Недоступно --
    catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js
    Скрипт Недоступно --
    catalog/view/javascript/jquery/datetimepicker/locale/ru.js
    Скрипт Недоступно --
    catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js


    отака петрушка, даже не знаю. А включать сжатие на сервере пока не хочу экспериментов с нагрузкой
     
  16. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    @Edikofff сервер спокойно сделает gzip сжатие сам. Не надо заниматься ерундой. Прописали правила в htaccess и всё.
     
  17. Edikofff

    Edikofff Новичок

    Сообщения:
    22
    Симпатии:
    1
    Не понимаю ничего в htaccess
    У меня стоит код
    Код:
    RewriteBase /
    RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
    RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
    RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.***.***$ [NC]
    RewriteRule ^(.*)$ http://***.**/$1 [R=301,L]
    RewriteCond %{HTTPS} "on"
    RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
    
    Поставил после него
    Код:
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/html "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 1 month"
    </IfModule>
    
    FileETag MTime Size
    <ifmodule mod_expires.c>
    <filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
    ExpiresActive on
    ExpiresDefault "access plus 1 month"
    </filesmatch>
    </ifmodule>
    Ничего не поменялось.
    Помогите люди добрые)))
    checkgzipcompression.com говорит что сжатие на сервере работает, значит что-то с моим кодом...или не туда втыкаю тли даже не знаю.
    кеширование работает (видимо первая часть кода), а сжатие похоже нет
    Сервисы говорят что нет сжатия для
    catalog/view/javascript/jquery/jquery-2.1.1.min.js
    catalog/view/javascript/bootstrap/js/bootstrap.min.js
    catalog/view/javascript/jquery/owl-carousel/owl.carousel.min.js
    catalog/view/javascript/common.js
     
    Последнее редактирование: 18 сен 2016
  18. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Ссылку на сайт.
     
  19. Edikofff

    Edikofff Новичок

    Сообщения:
    22
    Симпатии:
    1
    mint.org.ua
     
  20. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Вот код для сжатие gzip
    Код:
    # сжатие text, html, javascript, css, xml:
    <ifModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
    </ifModule>
     
    pilc, Викентий и Edikofff нравится это.