Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кэширование (как то нужно улучшить)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 12 Апреля, 2020 - 00:32:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




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

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

НО как быть с кэшем блоков?
Спойлер (Отобразить)


может есть вариант автоматического кэширования блоков??
 
 Top
LIME
Отправлено: 12 Апреля, 2020 - 13:44:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а почему так тормозит? лог медленных запросов включал? разбирался? что там такого объемного?
практически уверен что можно оптимизировать
кэш это оптимизация когда уже недостаточно других средств - всетаки еще одна точка отказа и лучше чтобы хоть как-то со скрипом но работало и без него

DlTA пишет:
НО время работы кеша ограничего
а зачем его ограничивать? инвалидируй при изменении данных в бд.
правда тогда возможно появится проблема вытеснения
вот тебе теориия https://habr[dot]com/ru/company/surf[dot][dot][dot]ird/blog/306252/
там же в коментах материал со звездочкой* ) https://www[dot]youtube[dot]com/watch?v=dawCuq9WrLM

ну и это для понимания возможных подводных камней при велосипедостроении https://habr[dot]com/ru/company/google/blog/316344/

DlTA пишет:
может есть вариант автоматического кэширования блоков
не совсем но всеже
https://ruhighload.com/%D0%9A%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D1%81+varnish

(Отредактировано автором: 12 Апреля, 2020 - 13:46:51)

 
 Top
DlTA
Отправлено: 13 Апреля, 2020 - 23:48:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




медленные запросы смотрел сам (время отработки запроса), в запросе 5+ JOIN, это много, сайт это магазин и проблема в выводе параметров в товарах (товаров выводится много).
для уменьшения JOIN, сделал в несколько запросов, стало лучше в 1.5-2 раза, но это го мало.

LIME пишет:
вот тебе теориия https://habr[dot]com/ru/company/surf[dot][dot][dot]ird/blog/306252/
понятно, но это уже с отдачей с сайта, а не с базой.

проблема вообще понятна, обычно магазины выводят товар на сайт без параметров, а для покупки уже ajax запрос (или что там у них), так выгодней,
НО у нас изначально выводились и параметры и поисковики редиски, и если сайт не отдают контент в 3 секунды (+-) то страницу выбрасывают из вывода.

а должен ли быть включен кеш от mysql, админ ставивший-настраивавший система FreeBDS, сказал что лучше не включать кеш от mysql, нужно?
 
 Top
LIME
Отправлено: 14 Апреля, 2020 - 00:19:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DlTA пишет:
а должен ли быть включен кеш от mysql
в новых версиях его выпиливают
DlTA пишет:
но это уже с отдачей с сайта, а не с базой.
почему? любой кэш, который не протухает по времени, а вытесняется более часто запрашиваемым(и инвалидируется при апдейте конечно)
(Добавление)
DlTA пишет:
проблема в выводе параметров в товарах
сделай так называемую проекцию
то есть запакуй все параметры в json и храни вместе с товаром
и при изменении параметра пересчитывай все json товаров, которым он принадлежит
редкое изменение - частый селект
 
 Top
DlTA
Отправлено: 14 Апреля, 2020 - 01:09:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




LIME пишет:
сделай так называемую проекцию
то есть запакуй все параметры в json и храни вместе с товаром
и при изменении параметра пересчитывай все json товаров, которым он принадлежит
редкое изменение - частый селект
ща еще нету катого запроса( , это у других сайтов такое.

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

НО проблема в блоках, при формировании html куча расчетов и это тоже тормозит.
 
 Top
Lolya
Отправлено: 29 Мая, 2020 - 10:05:36
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




DlTA пишет:
НО проблема в блоках, при формировании html куча расчетов и это тоже тормозит.

а чем ты выводишь этот html ?
И посади на индексы все запросы, скорость возрастет в разы. Подмигивание
просмотр использования индекса в phpmyAdmin:
CODE (htmlphp):
скопировать код в буфер обмена
  1. EXPLAIN EXTENDED SELECT

ну и сам запрос естественно.
 
 Top
DlTA
Отправлено: 03 Июня, 2020 - 00:08:43
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Lolya пишет:
просмотр использования индекса в phpmyAdmin:


DlTA пишет:
для оптимизации добавил кэширование, кэширование запросов к базе, кеширование блоков.

у меня уровень по сложнее,
нынче улучшили железо (по сильнее поставили) и сайт стал работать спокойнее.
 
 Top
LIME
Отправлено: 03 Июня, 2020 - 00:48:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DlTA а ты вообще профилировал где именно тормоза происходят?
https://habr[dot]com/ru/company/badoo/blog/436364/
 
 Top
Lolya
Отправлено: 07 Июня, 2020 - 23:15:37
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




DlTA пишет:
у меня уровень по сложнее,

просто пример!
файл блока
CODE (htmlphp):
скопировать код в буфер обмена
  1. $blocktitle = ".:: <b>Онлайн</b> ::.";
  2. $a = mysql_fetch_array(sql_query("SELECT textt FROM online WHERE id=1"));
  3. $text = $a['textt'];$content = $text;?>

в файл обновления всех данных раз в 30 минут(или в 1 час, или как нужно вам)
CODE (htmlphp):
скопировать код в буфер обмена
  1. ////// NACHALO //////
  2. $secwerd = 60 * 30;$sslodr = sqlesc(get_date_time(gmtime() - $secwerd));
  3. $onlinesweraz = sql_query("SELECT id FROM online WHERE time < $sslodr") or sqlerr(__FILE__,__LINE__);if(mysql_num_rows($onlinesweraz) > 0){
  4. ///// kod bloka //////////
  5. $onlinesw .= " тут вывод содержимого блока ";
  6. ///// kod bloka //////////
  7. $onlines = $onlinesw;
  8. sql_query("UPDATE online SET textt = ".sqlesc($onlines).", time = NOW() WHERE id=1") or sqlerr();}else{
  9. ///// kod bloka //////////     
  10. $onlinesw .= " тут вывод содержимого блока ";
  11. ///// kod bloka //////////
  12. $onlines = $onlinesw;sql_query("INSERT online SET textt = ".sqlesc($onlines).", time = NOW()");}
  13. //////////////// KONEC////////

в таблице блока в БД должно быть поле time, где пишем время обновления, от него идет отсчет для следующего обновления!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB