Оптимизация работы сайта

NesteA88
На сайте с 24.01.2017
Offline
59
#31
превью картинки надо создавать единожды, и а дальше отдавать уже ранее сгенерированное изображение.

Плагин SP Thumbnail используется всего для нескольких изображений (их не больше десятка) с определенным классом на определенных страницах.

Я не знаю, почему они пишут, что эскизы всех изображений на сайте генерируются этим плагином.

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

По поводу запроса нужно убрать из запроса ORDER BY RAND()

К сожалению, знаний для этого не хватает.

D
На сайте с 03.07.2004
Offline
128
#32
NesteA88:

Я не знаю, почему они пишут, что эскизы всех изображений на сайте генерируются этим плагином.

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



К сожалению, знаний для этого не хватает.

SELECT s.*,al.name AS album_name, al.image, ar.artist_name FROM v0ecf_muscol_songs as s 

LEFT JOIN v0ecf_muscol_albums as al ON al.id = s.album_id
LEFT JOIN v0ecf_muscol_artists as ar ON ar.id = s.artist_id ORDER BY RAND() LIMIT 5;

Этот запрос действительно ужасный!

Можно его переделать типа этого:

SELECT s.*, al.name AS album_name, al.image, ar.artist_name

FROM (SELECT * FROM `v0ecf_muscol_songs` ORDER BY RAND() LIMIT 5) as s

LEFT JOIN v0ecf_muscol_albums as al ON al.id = s.album_id

LEFT JOIN v0ecf_muscol_artists as ar ON ar.id = s.artist_id

Сначала выбрать 5 случайных песен, а потом уже к ним подтягивать другие данные.

В остальном надо код смотреть, что ещё можно поправить.

Софт для вебмастеров, программинг (C++/PHP/MySQL, Unix/Win) www.dfservice.com (https://dfservice.com/?afl=27)
Anamnado
На сайте с 08.02.2010
Offline
242
#33

слишком много подключений стилей и скриптов файлов.

jpg 191939.jpg
Aisamiery
На сайте с 12.04.2015
Offline
293
#34
DF™:

Сначала выбрать 5 случайных песен, а потом уже к ним подтягивать другие данные.
В остальном надо код смотреть, что ещё можно поправить.

А я бы лучше сделал по другому. Так как RAND() запросы очень тяжелые для оптимизатора, и если представить что например в таблице soft delete pattern, то проще вытащить последний ID таблицы и выбрать сколько надо случайных ID при помощи генерации чисел на самом php, проц сделает это быстро, а фильтрация по primary будет колоссальной.

---------- Добавлено 20.05.2020 в 02:15 ----------

Anamnado:
слишком много подключений стилей и скриптов файлов.

На сколько я понял, выясняем нагрузку на хостинг. Статика вряд ли как то нагружает хостера, если конечно это реально статика.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Anamnado
На сайте с 08.02.2010
Offline
242
#35

да я писю плохо а четаю хорошо:

NesteA88:
Одним из факторов такого большого количества обращений является то, что каждый запрос к страницам сайта генерирует множество дополнительных.

а вообще трудно искать чернуб кошку в темной комнате (если ее там нет)

[инфы нет и просто толоченье воды в кадке]

D
На сайте с 03.07.2004
Offline
128
#36
Anamnado:
слишком много подключений стилей и скриптов файлов.

Кто их отдает Apache или nginx, ещё вопрос?

Aisamiery
На сайте с 12.04.2015
Offline
293
#37
DF™:
Кто их отдает Apache или nginx, ещё вопрос?

Да нет там вопроса, статику там отдаёт openresty то есть nginx

NesteA88
На сайте с 24.01.2017
Offline
59
#38
Этот запрос действительно ужасный!

Да, возможно, они ужасные. Но все проблемные запросы, на которые жалуется хостер, создаются компонентом для Joomla под названием Music Collection.

Вот, кстати, из последней диагностики (на День ПВ опять был заблокирован):

Запрос: SELECT s.*,al.name AS album_name, al.image, ar.artist_name FROM v0ecf_muscol_songs as s LEFT JOIN v0ecf_muscol_albums AS al ON al.id = s.album_id LEFT JOIN v0ecf_muscol_artists AS ar ON ar.id = s.artist_id WHERE ( s.tags LIKE "32" OR s.tags LIKE "32,%" OR s.tags LIKE "%,32" OR s.tags LIKE "%,32,%" ) ORDER BY s.added DESC LIMIT 0, 10; выполняет поиск полей в таблице с тегом «32». Вариантом оптимизации данного запроса является исключение полей с похожими тегами, например, «321» или «132».

Самым ресурсоемким является запрос к таблице v0ecf_content_statistics: SELECT s.*, COUNT(st.id) AS howmuch, s.name as item_name, ar.artist_name , CONCAT("index.php?option=com_muscol&view=song&id=", s.id) as item_link FROM v0ecf_content_statistics as st LEFT JOIN v0ecf_muscol_songs AS s ON s.id = st.reference_id LEFT JOIN v0ecf_muscol_albums AS al ON al.id = s.album_id LEFT JOIN v0ecf_muscol_artists AS ar ON ar.id = s.artist_id

При его выполнении происходит обход 3543691 строк, всего в таблице 7265755 строк. Судя по содержанию таблицы, в ней содержатся статистические данные, собранные компонентом com_muscol. В данном случае рекомендуем удалить из таблицы устаревшую информацию или вовсе ее очистить.

Если честно, у меня нет знаний и навыков, чтобы "ковырять" данный компонент, исправляя запросы. После его обновлений надо будет все начинать заново + работоспособность после таких "ковыряний" никто не гарантирует.

Смена хостера может помочь? Или переезд на VPS/VDS? Или чтобы Вы посоветовали в данной ситуации?

слишком много подключений стилей и скриптов файлов.

Да, с этим полностью согласен. Если с css еще могу разобраться, то с js сложнее.

Aisamiery
На сайте с 12.04.2015
Offline
293
#39
NesteA88:
ДСмена хостера может помочь? Или переезд на VPS/VDS? Или чтобы Вы посоветовали в данной ситуации?

Конечно, в большинстве случаев кривизну кода можно компенсировать увеличением железа и его количества до определенного момента, а дальше либо снова платить, либо переписывать.

PS. Не пробовали уточнить, сколько будет разработать такой компонент вам отдельно? Глянул демку, там достаточно банальный CRUD по сути или там под капотом какой то гастрономических масштабов функционал?

NesteA88
На сайте с 24.01.2017
Offline
59
#40
Aisamiery:
Конечно, в большинстве случаев кривизну кода можно компенсировать увеличением железа и его количества до определенного момента, а дальше либо снова платить, либо переписывать.

PS. Не пробовали уточнить, сколько будет разработать такой компонент вам отдельно? Глянул демку, там достаточно банальный CRUD по сути или там под капотом какой то гастрономических масштабов функционал?

Нет, не спрашивал. Но пару лет назад ценник на внесение незначительных правок в код был от 100 евро.

Функционал прост: есть возможность добавить исполнителя, к этому исполнителю добавить альбомы, в альбомы - песни. Также есть поиск по жанрам, тегам и т.д. + в сочетании с другим компонентам выводить статистику (самые популярные песни и т.п.).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий