gam0ra
23.03.2015 - 21:55
Как лучше хранить кеш в файле на сайте при помощи unserialize или jsonencode или другой способ?
И в каком формате лучше сохранять фаил?
И проверять целостность кеша при помощи байтов или битов нормально?
а почему бы не использовать redis?
paul85
23.03.2015 - 22:27
gam0ra, уже настолько нагруженный проект? =)
gam0ra
Смотря что хранить.
Если статические страницы, допустим (контакты, информация о сайте, и тд) тогда есть смысл хранить сгенерированный html целиком.
Если какие нибудь конфиги из базы, тогда unserialize.
А что то другое может вообще лучше в оперативке кэшировать.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
paul85
Кэшированием лучше заняться сразу. Смысл постоянно генерировать страницу, если там всегда одни и те же данные? Неважно нагружен проект или нет.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
paul85
23.03.2015 - 23:53
Цитата (Arh @ 23.03.2015 - 22:56) |
Кэшированием лучше заняться сразу. Смысл постоянно генерировать страницу, если там всегда одни и те же данные? |
Arh, я считаю нет никакого смысла усложнять проект механизмом кэширования. Не уверен, что подсистема обслуживания кэша будет давать хоть какой-то прирост в производительности. На слабонагруженных проектах, естественно.
А тем более кэшировать страницу целиком... Еще данные, дёрнутые сложными запросами из СуБД... А какой смысл экономить на конструкциях, участвующих в отображении? Условия и циклы на 100-200 итераций... Да это копеечные вещи, потребление ресурсов -> 0.
Короче я категорически не согласен с вашим утверждением. =)
Invis1ble
24.03.2015 - 00:14
кэширование на малых нагрузках может не только не ускорить загрузку, но и... ВНЕЗАПНО! замедлить её
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
sergeiss
24.03.2015 - 00:26
Цитата (Invis1ble @ 24.03.2015 - 00:14) |
кэширование на малых нагрузках может не только не ускорить загрузку, но и... ВНЕЗАПНО! замедлить её |
Но зато ТСу можно будет поупражняться в кэшировании, чтобы потом уже ЗНАТЬ, как оно работает. Я думаю, что даже если он и увеличит нагрузку на сервер, то все равно он небольшая будет.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
paul85
24.03.2015 - 01:23
Есть ли смысл ТСу увлекаться кэшированием? Может быть стоит прокачать скилл в разработке архитектуры... Тогда и кэширование долгое время не понадобится.
Что если использовать
memcache?
Цитата |
Модуль Memcache предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях. |
_____________
Трус не играет в хокей
johniek_comp
24.03.2015 - 13:12
зачем? nginx может столько всего, думаю попробуй с начала с него
_____________
paul85
Цитата |
А тем более кэшировать страницу целиком |
Да тут дело даже не в скорости, дело в логике.
Просто какой смысл каждый раз генерировать страницу, если там статические данные?
Например карта сайта, которая меняется допустим только при добавлении/удалении/редактировании категорий.
Тут либо каждый раз делать запрос в базу для выборки всех категорий из разных модулей и каждый раз циклом строить дерево в шаблоне.
Либо 1 раз построить, а потом отдавать уже сгенерированную страницу и уже не беспокоится как часто на неё заходят.
Да и механизм не сложный.
if(есть кэш) {
echo кэш;
} else {
echo $model->create_cache();
}
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble
24.03.2015 - 20:24
карту сайта на лету по-моему и так никто не генерирует
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
paul85
24.03.2015 - 21:18
Цитата (Invis1ble @ 24.03.2015 - 20:24) |
карту сайта на лету по-моему и так никто не генерирует |
Ну конечно! Еще как генерируют.
![biggrin.gif](http://phpforum.su/html/emoticons/biggrin.gif)
Например вот:
http://gt-shop.ru/sitemap.xmlОткрывайте любую из списка...
К слову сказать автор этого сайта - большой критикан. Например мой код, по его мнению, - УГ. Жаль что он не тусит на это форуме. А может быть и тусит - хрен его знает! Тогда привет тебе, Д.
![wink.gif](http://phpforum.su/html/emoticons/wink.gif)
Цитата (Arh @ 24.03.2015 - 15:10) |
Либо 1 раз построить, а потом отдавать уже сгенерированную страницу и уже не беспокоится как часто на неё заходят. |
Да я итак не беспокоюсь. =) Просто глубоко убежден в том что:
1. Кэшировать нужно не страницы, а данные.
2. Имеет смысл только и только на ресурсоёмких операциях.
Что касается sitemap, ну конечно же его лучше перевести в статику. Хотя карта карте рознь. Например, если это крохотный сайтик-визитка, у которого 20-30 страничек, то гораздо проще генерировать каждый раз заново. Тем более этот файл дергают только поисковики пару раз в неделю. Даже больше скажу: у меня этого файла вообще нет как такового. Даже не сохраняю, сразу из PHP летит.
А вот, например, в случае приведенном мной выше - ну тут, естественно, без вариантов. Нужно генерировать и складывать на диск. А то этого чувака задэдосить элементарно. Даже как-то неприлично этим заниматься... Все-равно что кошке пинка дать.
Arh, вы ведь фреймворки популярные используете, если не ошибаюсь?
Invis1ble
Цитата |
карту сайта на лету по-моему и так никто не генерирует |
Я про то и говорю, что кэш и не нагруженных проектах иногда нужен.
paul85
Цитата |
Например, если это крохотный сайтик-визитка, у которого 20-30 страничек, то гораздо проще генерировать каждый раз заново. |
Чем проще то? Проще 1 раз сгенирировать, чем каждый раз дёргать данные и строить дерево.
И 20-30 страничек проще 1 раз сгенерировать.
Вот кэшировать данные для страниц смысла нет, что из базы доставать, что из кэша. А саму страницу почему бы и незакэшировать?
Я имею ввиду не всю страницу от <html> до <html>, а только тот участок (модуль), который выводит страницы (публикации, материалы).
paul85
Цитата |
Arh, вы ведь фреймворки популярные используете, если не ошибаюсь? |
Не использую, а что?
ИМХО, кэширование не тормозит малонагруженные проекты.
Да и как так, делать сначала без кэша, а потом когда проект станет популярным (мы ведь для этого и программируем, что бы люди пользовались), переписывать его чтоб кэш встроить грамотно, ну или костылять.
Допустим вообразим себе малонагруженный сайт, который работает без кэша, у которого есть модуль "меню" - ссылки добавляются через админку.
Страница генерируется за 1 секунду, потому что модуль "меню" делает запрос в базу, потом циклом строит вложенное меню.
Зашел на сайт 1 человек, потратил 1 секунду процессорного времени.
Ну стал сайт популярным, ну зашло туда 10.000 человек, ну потратили они 10.000 секунд времени.
Но для каждого человека всё равно 1 секунда.
И какая разница, нагружен сайт или нет?
А теперь представим тот же сайт, с тем же модулем, только модуль не генерирует меню, а берёт его из уже сгенерированного файла. И страница открывается 0.5 сек.
Что 1 человек зайдёт, для него сайт откроется за пол секунды, что 10.000 зайдёт, для каждого будет 0.5
Или я что то не понимаю?
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2