Sander1 62 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 Вновь подниму вопрос касательно оптимизации. Как известно, на средних и больших БД, запрос вида: SELECT count(*) as count_all FROM dle_post WHERE {...} Порой занимает довольно продолжительное время. И чем больше новостей в разделе, тем дольше запрос. И получается, что на всех (!!) страницах где есть навигация: /page/2/, /page/3/, /page/4/, /page/5000 Будет повторно выполняться один и тот же медленный запрос, который всегда будет отдавать один и тот же результат. Таким образом, в результате сканирования всех 5000 страниц, будет выполнено минимум 10000 запросов. Хотя могло, и следовало бы - 5001. Я предлагаю сделать отдельный кеш для счетчика количества новостей во всех разделах. PS. Для желающих использовать или попробовать это решение - выложил в виде плагина на github: https://github.com/San-Dev/dle-plugins/blob/master/cat-optim.xml 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 1 час назад, Sander1 сказал: выложил в виде плагина на github: $cache_hash = md5($sql_count); если я правильно понял про кеширование, то при появлении новых новостей в момент хождения по страницам - $sql_count не изменится, изменится результат его выполнения... Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 (изменено) Sander1 у тебя наверно отключена отложенная публикация. и запрос один и тот же. а так на самом деле и AND date<'...' добавляется Изменено 1 декабря 2020 пользователем crafic Цитата Ссылка на сообщение Поделиться на других сайтах
Sander1 62 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 33 минуты назад, MSK сказал: $cache_hash = md5($sql_count); если я правильно понял про кеширование, то при появлении новых новостей в момент хождения по страницам - $sql_count не изменится, изменится результат его выполнения... Мой хак хранит кеш всех результатов запросов в одном файле с именем news_select-count.tmp. Добавление или удаление новости удаляет все файлы кеша с префиксом news_. В том числе мой файл кеша так же будет удален и создан заново с новыми, правильными значениями. 29 минут назад, crafic сказал: Sander1 у тебя наверно отключена отложенная публикация. и запрос один и тот же. а так на самом деле и AND date<'...' добавляется "Отложенная публикация" - это как раз то, что я у себя в статье рекомендую отключать в первую очередь. Вот примеры запросов: В разделе 110к новостей [query] => SELECT COUNT(*) as count FROM dle_post p INNER JOIN (SELECT DISTINCT(dle_post_extras_cats.news_id) FROM dle_post_extras_cats WHERE cat_id IN ('2')) c ON (p.id=c.news_id) WHERE approve=1 [time] => 1,4607090950012 В категории 44к новостей [query] => SELECT COUNT(*) as count FROM dle_post p WHERE category IN ('1') AND approve=1 [time] => 0,27791213989258 В категории 10к новостей [query] => SELECT COUNT(*) as count FROM dle_post p WHERE category IN ('2') AND approve=1 [time] => 0,083189964294434 В разделе 5к новостей [query] => SELECT COUNT(*) as count FROM dle_post WHERE xfields LIKE '%2019%' AND approve=1 [time] => 0,746661901474 Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 (изменено) ну тогда я предлагаю и AND approve=1 убрать для ускорения запроса и перемещать все новости на модерации в отдельный раздел. например вот так https://skr.sh/s5PsSZX3P3X а если бы мне за оптимизацию платили я бы еще кое что придумал, да такое что dle точно бы прибавил газу 😁 Изменено 1 декабря 2020 пользователем crafic 1 Цитата Ссылка на сообщение Поделиться на других сайтах
ntrtv 56 Опубликовано: 1 декабря 2020 Рассказать Опубликовано: 1 декабря 2020 3 часа назад, Sander1 сказал: Отложенная публикация" - это как раз то, что я у себя в статье рекомендую отключать в первую очередь. А как без отложек? У нас несколько корреспондентов на сайте. Они расставляют новости с интервалом 20-30 минут. Как без отложки это делать? А как на раннее утро ставить, на поздний вечер и т.п.? Цитата Ссылка на сообщение Поделиться на других сайтах
Sander1 62 Опубликовано: 2 декабря 2020 Рассказать Опубликовано: 2 декабря 2020 14 часов назад, ntrtv сказал: А как без отложек? У нас несколько корреспондентов на сайте. Они расставляют новости с интервалом 20-30 минут. Как без отложки это делать? А как на раннее утро ставить, на поздний вечер и т.п.? Я не могу сказать точно в процентном соотношении, но полагаю что бОльшая часть часть сайтов не использует этот функционал. Но он включен в движке по умолчанию. Поэтому я и рекомендую его отключать. Кто знает, что это такое, тот оставит включенным. Кто нет - лучше выключить. К тому же то, как сейчас реализована отложенная публикация - это лишь один из вариантов. Который тоже не без недостатков. Пока кеш новостей не будет очищен - новость не будет отображаться в общей ленте на сайте. Другое дело, что кеш чистится довольно таки часто, в зависимости от активности пользователя (выставление оценки, добавление комментария). Более правильным вариантом - было бы использование планировщика заданий. И это, кстати, идея. Подумаю над реализацией такого модуля. 16 часов назад, crafic сказал: ну тогда я предлагаю и AND approve=1 убрать для ускорения запроса и перемещать все новости на модерации в отдельный раздел. например вот так https://skr.sh/s5PsSZX3P3X а если бы мне за оптимизацию платили я бы еще кое что придумал, да такое что dle точно бы прибавил газу 😁 Не могу не согласиться. Но вряд ли такое будет реализовано, уж очень много надо будет переделывать как мне кажется. Цитата Ссылка на сообщение Поделиться на других сайтах
kamensk 86 Опубликовано: 2 декабря 2020 Рассказать Опубликовано: 2 декабря 2020 2 часа назад, Sander1 сказал: Я не могу сказать точно в процентном соотношении, но полагаю что бОльшая часть часть сайтов А много ли сайтов на дле - 200-300тысяч публикаций? Цитата Ссылка на сообщение Поделиться на других сайтах
Sander1 62 Опубликовано: 2 декабря 2020 Рассказать Опубликовано: 2 декабря 2020 22 минуты назад, kamensk сказал: А много ли сайтов на дле - 200-300тысяч публикаций? Не знаю. Может и есть, не сомневаюсь в этом. Но про такие числа и не идет речь. Все тестирования я провожу на вполне реальных сайтах с количеством публикаций 50-100к Сайт кинотематики 61к новостей: 44к фильмов, 10к сериалов, 6к мультиков. Сайт с играми 94к. Цитата Ссылка на сообщение Поделиться на других сайтах
kamensk 86 Опубликовано: 2 декабря 2020 Рассказать Опубликовано: 2 декабря 2020 1 час назад, Sander1 сказал: Не знаю. Может и есть, не сомневаюсь в этом. Но про такие числа и не идет речь. Все тестирования я провожу на вполне реальных сайтах с количеством публикаций 50-100к Сайт кинотематики 61к новостей: 44к фильмов, 10к сериалов, 6к мультиков. Сайт с играми 94к. Посещалка какая? На хостинге размещенны? Цитата Ссылка на сообщение Поделиться на других сайтах
Sander1 62 Опубликовано: 2 декабря 2020 Рассказать Опубликовано: 2 декабря 2020 2 часа назад, kamensk сказал: Посещалка какая? На хостинге размещенны? У меня - нулевая посещаемость, это тестовые сайты. На хостинге и на локалке. Цитата Ссылка на сообщение Поделиться на других сайтах
Mr. Bot 26 Опубликовано: 4 декабря 2020 Рассказать Опубликовано: 4 декабря 2020 02.12.2020 в 15:41, Sander1 сказал: Другое дело, что кеш чистится довольно таки часто, в зависимости от активности пользователя (выставление оценки, добавление комментария). Я давным давно обращал внимание на то что кеш должен быть не в виде HTML, а собираться вручную из кусочков, но в угоду немного выросшей нагрузке, насилуем MySQL на больших базах. 01.12.2020 в 18:43, Sander1 сказал: PS. Для желающих использовать или попробовать это решение - выложил в виде плагина на github: https://github.com/San-Dev/dle-plugins/blob/master/cat-optim.xml Файл кеша может сильно раздутся, да и в виде одного крупного файла решение не очень. По сути нужно юзать тот же memcache, и для каждой выборки использовать свой кеш. Но тут даже у @celsoft с его реализацией кеш-карты не предусмотрена такая проблема, что по дефолту memcache может хранить запись размером только 1 Mb, и на больших сайтах эффективность типа кеширования что используется в DLE, стремится прямиком к нулю. Цитата Ссылка на сообщение Поделиться на других сайтах
Alex-GR 5 Опубликовано: 4 декабря 2020 Рассказать Опубликовано: 4 декабря 2020 Модуль googlemap. Вначале идет кнопка "Уведомить поисковые системы о наличии новой версии карты сайта", а в самом конце - "Создать / Обновить файл карты сайта". Возможно, вначале нужно сгенерить сайтемап, а потом его уже отправлять? И кнопки в таком же приоритете расставить? Фигня, конечно, но... Заранее благодарен, если прислушаетесь. Выкину пару строк из плагина. Цитата Ссылка на сообщение Поделиться на других сайтах
dds 49 Опубликовано: 6 декабря 2020 Рассказать Опубликовано: 6 декабря 2020 Было бы не плохо, если бы можно сокращать большой рейтинг (Пример: 1000 => 1K 100000 => 100K 1000000 => 1M) 1 Цитата Ссылка на сообщение Поделиться на других сайтах
ZzzBep 18 Опубликовано: 9 декабря 2020 Рассказать Опубликовано: 9 декабря 2020 1.Есть предложение сделать поиск имеющихся фото. (если это уже есть шлите меня в лес )) Ежегодно одни и те же события повторяются и не только ежегодно. Так вот бывает часто грузишь одну и туже фотку. Запомнить название фотки я думаю никто не запомнит. А вот найти ее поиском по названию новости это уже проще. То есть в загруженных фотках есть поиск в котором вбиваем примерное название новости и он показывает фотки которые в ней есть. Жмем на нужную и все. Это будет экономить время и место на хостинге, особенно для активных сайтов. https://prnt.sc/vz1de3 2. Сделать возможность выбора на что оканчивается ЧПУ я думаю это было бы хорошо https://prnt.sc/vz1aip Так же сюда можно было бы варианты генерации ЧПУ добавить https://prnt.sc/vz1byp Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 9 декабря 2020 Рассказать Опубликовано: 9 декабря 2020 1 час назад, ZzzBep сказал: 1.Есть предложение сделать поиск имеющихся фото. (если это уже есть шлите меня в лес )) Если фото добавить ссылкой из другой новости, то при удалении новости-донора фото тоже удалится. Цитата Ссылка на сообщение Поделиться на других сайтах
ZzzBep 18 Опубликовано: 9 декабря 2020 Рассказать Опубликовано: 9 декабря 2020 44 минуты назад, MSK сказал: Если фото добавить ссылкой из другой новости, то при удалении новости-донора фото тоже удалится. Нет новости нет проблем, я имею ввиду существующие. Не совсем понял честно что Вы имели ввиду. Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 9 декабря 2020 Рассказать Опубликовано: 9 декабря 2020 1 час назад, ZzzBep сказал: Не совсем понял честно что Вы имели ввиду. "Имеющиеся фото" - это фото, которые ранее были загружены в новостях. Каждое фото "привязано" к той новости, в которой было загружено и при удалении этой новости удаляются и фото, которые к ней были загружены. Цитата Ссылка на сообщение Поделиться на других сайтах
DENDIN 0 Опубликовано: 9 декабря 2020 Рассказать Опубликовано: 9 декабря 2020 Добавить в авторизацию через соц сети сервис Yahoo Цитата Ссылка на сообщение Поделиться на других сайтах
ZzzBep 18 Опубликовано: 10 декабря 2020 Рассказать Опубликовано: 10 декабря 2020 14 часов назад, MSK сказал: "Имеющиеся фото" - это фото, которые ранее были загружены в новостях. Каждое фото "привязано" к той новости, в которой было загружено и при удалении этой новости удаляются и фото, которые к ней были загружены. Это понятно, в таком случае ничего не найдет если нет. На нет ничего нет. Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 11 декабря 2020 Рассказать Опубликовано: 11 декабря 2020 (изменено) 10.12.2020 в 10:39, ZzzBep сказал: Это понятно, в таком случае ничего не найдет если нет. На нет ничего нет. Похоже, что тебе совсем не понятно. Поясняю суть. Есть новость А и к ней загружено фото. Создаем новую новость Б и вставляем через поиск это фото. По каким-то причинам удаляется или вся новость А или именно это фото из нее. Результат - в новости Б тоже пропадает это фото. Изменено 11 декабря 2020 пользователем MSK Цитата Ссылка на сообщение Поделиться на других сайтах
nezov134 31 Опубликовано: 11 декабря 2020 Рассказать Опубликовано: 11 декабря 2020 Сделайте вход через Apple ID Цитата Ссылка на сообщение Поделиться на других сайтах
ZzzBep 18 Опубликовано: 12 декабря 2020 Рассказать Опубликовано: 12 декабря 2020 21 час назад, MSK сказал: Похоже, что тебе совсем не понятно. Поясняю суть. Есть новость А и к ней загружено фото. Создаем новую новость Б и вставляем через поиск это фото. По каким-то причинам удаляется или вся новость А или именно это фото из нее. Результат - в новости Б тоже пропадает это фото. Это видимо крайняя крайность и возможность такого сценария мала. Если я и ищу фото из существующих, то явно не собираюсь удалять. Как вариант так же можно сделать проверку фото перед загрузкой, если фото есть в базе не грузить повторно, брать существующее. Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 12 декабря 2020 Рассказать Опубликовано: 12 декабря 2020 3 часа назад, ZzzBep сказал: Если я и ищу фото из существующих, то явно не собираюсь удалять. В таком случае, вы пытаетесь решить задачу только для себя, когда автор на сайте 1. Качественная реализация этого функционала должна учитывать все возможные ситуации. Цитата Ссылка на сообщение Поделиться на других сайтах
ZzzBep 18 Опубликовано: 12 декабря 2020 Рассказать Опубликовано: 12 декабря 2020 15 минут назад, MSK сказал: В таком случае, вы пытаетесь решить задачу только для себя, когда автор на сайте 1. Качественная реализация этого функционала должна учитывать все возможные ситуации. Причем здесь я и один автор, да хоть десять авторов. Покажите хоть один ресурс пишущий что-то и удаляющий сразу. И как на это поисковики отреагируют? Делают редактирование, а максимум редирект. То что ее продумать нужно это и еду понятно. Куда-то Вас несёт не туда. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.