Вопросы про размеры кэша...

hell0w0rd

Продвинутый новичок
2 страницы не о чем)) Парень посмотрел на CMS, решил что надо бы освоить и написать какой-нить плагин, ну а что можно написать - можно кеширование присобачить, оно же везде к месту!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
StalkerClasses, ты еще не знаешь что это такое, а уже говоришь нет) И кеширование надо не для бэкэнда, а для фронта, либо я неверное понял твои слова.
 

hell0w0rd

Продвинутый новичок
StalkerClasses, нафига? у тебя что-то тормозит? какое время генерации страницы?
Если тормозит - пробовал посмотреть, что конкретно тормозит?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
StalkerClasses, тогда я не понимаю, почему тебя пугает вообще размер кеша в 100Мб, тем более на диске, который скорей всего на диске вовсе и не лежит, а схавался ОС и лежит в ОЗУ.

Ответь на вопрос hell0w0rd
 

AmdY

Пью пиво
Команда форума
во-во, нужно не размер смотреть, а количество попаданий-промохов. а то понакешируют так, что без кеша работает быстрее, особенно когда складывают всё в фс.
 

hell0w0rd

Продвинутый новичок
А xdebug не позволяет трейсы записывать, чтобы посмотреть какая функция в стеке больше всего жрет времени?
Надо заниматься исправлением архитектуры системы, а не затыкать ее кешером)
 

StalkerClasses

Новичок
А есть ли смысл сжимать HTML-код шаблона?
Например от SMARTY.
В целях уменьшения веса кэша?

Что-то вроде:
PHP:
// example
$smarty->loadFilter('output','gzip');
$smarty->display('tpl/index.html');
//end
Или это ерунда?
 

StalkerClasses

Новичок
А есть ли смысл сжимать HTML-код шаблона?
Например от SMARTY.
В целях уменьшения веса кэша?

Что-то вроде:
PHP:
// example
$smarty->loadFilter('output','gzip');
$smarty->display('tpl/index.html');
//end
Или это ерунда?
Т.к. в Modx - на 20 000 документов приходится 20 Mb - кэша, судя по всему там идет не банальное кэширование HTML-страничек...
А внутренняя логика кэширования моделей и данных.
Вот похожим и займусь...
Спасибо :)
 

hell0w0rd

Продвинутый новичок
Как об стенку горох.
Вот у тебя есть база данных, из базы данных ты делаешь выборки данных. Ты хочешь взять и СКОПИРОВАТЬ всю базу данных в кешер. Вопрос - нафига?
 

StalkerClasses

Новичок
Как об стенку горох.
Вот у тебя есть база данных, из базы данных ты делаешь выборки данных. Ты хочешь взять и СКОПИРОВАТЬ всю базу данных в кешер. Вопрос - нафига?
Только начинаю осваивать тему кэширвоания.
Как понимаю - если идут просто SELECT - запросов - то это идеяльно и здесь даже без кэша лучше наверное, т.к. это будет дублирование...

Но вот, что у меня получается...
- выборка по четырем таблицам к примеру (сам товар, свойства товара, участие в акциях, принадлежность к бренду) - уже четыре запроса...
- кроме того комментарии к товару (таблица пользователей, таблица комментариев)
- кроме того, т.к. использую SMARTY - у меня есть одна спец.функция по обработке картинок (плагин для шаблона, используется в HTML) (которая тажке обращается к БД - за описанием картинки).
- и есть счетчик просмотров который надо постоянно обновлять - его придется вызывать каждый раз.

В итоге получается, что мне лучше один раз записать кэш...
Но кэш не всей страницы, а только вот этого участка товар + комментарии.
По идее так получается?
В итоге против 6 запросов к БД - будет один в кэш.
 

StalkerClasses

Новичок
И появился вот такой - вопрос.
Помоему fixxxer - мне где -то уже говорил...
что используй кэширование моделей - а как их здесь в моем случае-то использовать?
Возможно ли это?
 

hell0w0rd

Продвинутый новичок
- выборка по четырем таблицам к примеру (сам товар, свойства товара, участие в акциях, принадлежность к бренду) - уже четыре запроса....
Принадлежность к бренду - в запросе с выбором самого товара.
Тут по моему @Фанат как-то раз, и вроде мне же, и написал - база существует для того чтобы из нее читать. я соглашусь, что для выдачи нужно ну 5-6 запросов, окей. Ну и что? Попробуй выполни конкретно нужные запросы для получения того, что тебе требуется для построения страницы - и посмотри время. Я уверен, что это время тебя устроит и ты попробуешь поискать кто же еще может тормозить генерацию страницы.

Просто можно выбирать все свойства нужных товаров одним запросом, а можно на каждый товар по запросу в цикле - вот тут и тормоза всплывают и конечно кешер их затыкает.

PS а кеширование целых моделей, ВСЕХ, а не например 10 популярных товаров - это полный бред. Если @fixxxer имел ввиду именно все товары - я не согласен. Юзайте сразу документо-ориентированные базы, а не "кешируйте" из рсубд в nosql
 

флоппик

promotor fidei
Команда форума
Партнер клуба
PS а кеширование целых моделей, ВСЕХ, а не например 10 популярных товаров - это полный бред. Если @fixxxer имел ввиду именно все товары - я не согласен. Юзайте сразу документо-ориентированные базы, а не "кешируйте" из рсубд в nosql
фиксер такого не говорил, конечно. Он писал, что кешировать смысл есть данные, и логично это делать в модели, которая эти данные представляет
 

riff

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

Иногда имеет смысл хранить не сгенерированные страницы (или блоки), а некую информацию по которой легко воссаздаётся та или иная часть страницы.

Ничего путного в голову не приходит, но например:
http//site/products?param1=TV&param2=SONY&param3=LED
здесь видно, что пользователь набрал в фильтре TV-SONY-LED, теперь, в базе, надо выбрать все телевизоры, затем из этого списка выбрать sony, и затем ещё led = в лучшем случае 3 запроса, но для получения результата надо:
а.объединять(inner join, возможно сложных) таблицы продукты и параметры при запросах
б.где-то хранить промежуточные данные
в. ...
Предположим, получили результат - 10 моделей в нашем списке, и лишь 5 моделей в наличии, вываливаем список теликов на экран.

Кэшировать ли итоговый html блок (а если, в добавок, идёт разбивка на страницы, то как) ? А не проще ли запомнить в таблице, условно назовём её products_filters, ID_фильтра и ID_товаров, попадающих под этот запрос, и при следующем подобном запросе, одним селектом, запрашивать список товаров.

Собственно это и хотел сказать.
 
Последнее редактирование:

StalkerClasses

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