Автор Тема: Долгая загрузка страницы товара  (Прочитано 1315 раз)

06 Октября 2014, 17:03:37
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, заметил у себя на сайте такую штуку. Если в категории много товаров, то страница товара из этой категории грузится порядка 5 секунд, а вот товар из категории в которой не особо много товаров грузится секунд за 2. Почему это происходит и как это исправить? Даже сама категория, которая большая, грузится не особо дольше чем маленькая категория, но вот сам товар из этой категории ужасно долго грузится.
Вот наглядный пример:
http://lady-caprices.ru/bluzki/trikotajnaja-bluza-kapuchino.html и http://lady-caprices.ru/platya/platie-dlyamodnic-cevys.html. Разница в загрузках этих страниц около 3 секунд. Разница между ними лишь в том что в разделе /platya/ около 400 товаров, а в разделе /bluzki/ 90. Вот только непонятно, почему количество товаров в категории зависит на скорость загрузки страницы товара, находящегося в этой категории. Как будто он грузит все товары из этой категории. Все еще остается непонятно! Все остальные страницы, я имею ввиду сама страница категории, а также главная страница и все доп страницы грузятся очень быстро(около секунды), но вот со страницами самих товаров какая то непонятка. Помогите, пожалуйста, разобраться! Заранее благодарен.
06 Октября 2014, 18:08:10
Ответ #1
  • Партнер
  • Фрилансер
  • ****
  • Сообщений: 224
  • Репутация: +10/-0
  • SEO оптимизация сайтов, интенет-магазинов.
    • Просмотр профиля
Сделайте тест. Можно в FireFox смотреть скорость загрузки. Так узнаете что дольше загружается. Также будут данные общие рекомендации по улучшению работы сайта.
Поисковая оптимизация, SEO  оптимизация сайтов, интенет-магазинов.  Работа на результат –  вывод в топ, увеличение посещяемости и увеличение продаж.
06 Октября 2014, 18:23:03
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 13276
  • Репутация: +14555/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Оптимизировать тему нужно. Убрать поднрузку сторонних файлов. В прожорливых модулях, так как фильтры и подобные товары, изменить загрузку данных. Подгружать товары по ajax. Кеширование к вас не работает. Первая загрузка страницы, грузятся 31 картинка, контент, стили, шрифты с google... вторая все также. Не используется сжатие. В общем, проблем полно. Как написал Янус, включайте firefox и проводите тестирование.
06 Октября 2014, 21:57:13
Ответ #3
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
qzip сжатие постоянно делаю, но файл .htaccess сам по себе перезаписывается и стираются строчки, которые я добавляю. Как изменить правила создания фала .htaccess. PS 1.6
07 Октября 2014, 12:19:18
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86048
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Файл htaccess сам по себе не может меняться. Это делаете вы или крон. Если вам нужно добавлять спец.правила в этот файл, то делать это нужно вручную.

Включение сжатия нужно делать на строне сервера, а не в htaccess. Сконфигурируйте правильно веб.сервер, тогда не будет проблем с добавлением правил.
Нет правил, которые на 100% подходят ко всем сайтам. Нужно проаналировать, что подходит в вашем случае. Я знаю случаи когда включение ККК в prestashop приводило к увеличению времени загрузки страницы, а не снижению, как написано в рекомендациях prestashop.

Сжатие
HTTP-сжатие было определено в стандарте HTTP/1.1,  все современные браузеры и практически все сервера его поддерживают. Сервер может отдавать ответ в gzip или deflate, а браузер разжимает данные. Это уменьшает количество передаваемого трафика (до 70-80%), но увеличивает нагрузку на процессор.
Если ваш сервер посещает много клиентов с медленным подключение, сжатие может снизить нагрузку с вашего сервера из-за того что сервер сможет быстрее передать сжатый ответ и освободить ресурсы, занятые дочерним процессом. Особенно сильно этот эффект может быть заметен если у вас быстрый процессор, но мало памяти.
Кеширование конфигурируется директивами модуля mod_deflate. Имейте в виду, что не следует устанавливать степень сжатия gzip более 4-5 - это потребует существенно большего времени CPU, а эффект будет достаточно невелик. Не нужно пытаться сжать изображения в jpg, gif и png, музыку, видео файлы и все другие бинарные файлы, которые уже и так хорошо сжаты.

Кеширование на стороне клиента
Не забывайте устанавливать Expires заголовки на статические файлы (модуль mod_expires). Если файл не изменяется, то его всегда следует попробовать закешировать на клиенте. Тогда у клиента будут быстрее загружаться страницы, а сервер освободится от лишних запросов.
07 Октября 2014, 17:33:47
Ответ #5
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот что у меня хранится в файле .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

<IfModule mod_gzip.c>
   
mod_gzip_on Yes
   
mod_gzip_dechunk Yes
   
mod_gzip_item_include file \.(html?|txt|css|js|php)$
   
mod_gzip_item_include mime ^text/.*
   
mod_gzip_item_include mime ^application/x-javascript.*
   
mod_gzip_item_exclude mime ^image/.*
   
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
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/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>

FileETag INode MTime Size
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript
</IfModule>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Сжатие и кэширование по идеи работают. Проверьте, плиз, на всякий случай. На стороне сервера тоже все включено.
07 Октября 2014, 18:06:45
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
Цитировать
Вот наглядный пример:
http://lady-caprices.ru/bluzki/trikotajnaja-bluza-kapuchino.html
и
http://lady-caprices.ru/platya/platie-dlyamodnic-cevys.html.
Первая,  78 requests    1.9 MB    7.31 s
Вторая, 80 requests    2.3 MB    11.02 s
Разница в весе страниц. То что скорость падает при увеличении веса, говорит о том, что хостинг не справляется и нужно оптимизировать сайт.
Цель такой оптимизации – максимально уменьшить количество HTTP запросов к web-серверу и облегчить браузеру просмотр HTML странички полученной в качестве ответа на этот запрос, за счет оптимизации графики, использование CSS-спрайтов, использование Inline-картинок, использование ККК, использования CDN для загрузки JavaScript библиотек, уменьшение объема HTML и CSS кода за счет удаления неиспользуемых стилей, блоков.
07 Октября 2014, 18:19:13
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
Тестируйте свой сайт, этого никто делать за вас не будет. Если много сервисов, которые помогают оптимизировать сайт.
07 Октября 2014, 19:01:07
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уже писали, что нужно сделать. Вы же открывали подобную тему - Перенос файлов на поддомен
Установите модуль Cache Manager Boost скорость реально возрастет.

Судя по результам тестов от coderа, так вы и не настроили параллельную загрузку. Внешние js-файлы блокируют параллельную загрузку. По спецификации HTTP/1.1, браузеры параллельно загружают не более 2-х компонентов веб-страницы с одного хоста. Таким образом, если картинки для вашего сайта располагаются на разных хостах, вы получаете больше 2-х параллельных процесов. Но когда у вас внешнии файлы загружаются, то браузер не будет начинать никаких других загрузок, даже с других хостов. Поэтому в результатах тестов оценка 0 за параллельную загрузку.