Symfony очень удобный и производительный фреймворк. Даже метафреймворк. На его базе можно создавать множество различных приложений. В том числе и фреймворков. Например, Silex.
Есть просто некоторые вещи, которые неудобно делать. А именно, проекты где контент меняется в зависимости от авторизации пользователя. Причем когда этого контента много. Как в случае с хабром. И то это проблема больше реализации кэша, чем самого Symfony. Ничто не мешает написать свою оболочку.
Конечно, можно. В моем случае хоть и не идентичные, но очень схожие.
Там и там последние публикации с одинаковым набором данных: заголовок, автор, блог.
Естественно это сравнение приблизительно!
У моего друга есть следующая программа тренировок:
всю рабочую неделю есть обезжиренный творог без всяких добавок, например сахара. Иногда вместо творога, можно есть фасоль, гречку или куриные грудки. Но в основном творог. В день примерная норма 1 кг творога. Есть не сразу, а желательно каждые 2-3 часа.
На выходных есть все что душе захочется и в любых количествах.
Автор молодец. Написать за 2 недели сервер и клиент, да еще с учетом масштабирования. Плюс дизайн сделать (хоть не супер, но все же хоть что-то).
Я как разработчик проникся уважением.
Многопоточные сервера писать это вам не плюшки в магазине покупать.
Лучше не использовать звездочки (*) при чистке кэша при условии использования memcache. Так как при удалении со звездочкой используется метод removePattern, который проходит по всем ключам из кэша и удаляет нужные по маске. Так вот хранятся эти все ключи там же в memcache в отдельной записи [prefix]_metadata c expire равной 0. Может случится ситуация, когда объем записи превысит лимит. ( у меня случилось к слову ) А дальше у сами додумайте ).
Отключить сохранение ключей в одну запись можно параметром:
storeCacheInfo: true
В версия symfony < 1.2.9 эти ключи добавлялись даже без удаления дубликатов:
«Cтранноприимный дом» Елены Челноковой
Книга сборник историй, рассказанных странными людьми. Людьми не похожими на остальных. Странными, колеками с точки зрения общества. Те кому понравился Коэлье, оценят и эту книгу.
Еще у этого автора понравился небольшая повесть «Страшный суд»
Я понял принцип о котором вы говорите. Обдумаю как его применить в узких местах проекта. Я думаю он не противоречит, а даже дополняет то, к чему я пришел. Спасибо.
p.s. Вот только не знаю в знак благодарности минусовать вас или плюсовать :)
Знаете, эта фраза поставила меня в тупик. Объясню почему — цикл моих статей не о том, в чем я слабо разбираюсь или не разбираюсь. Они, если вы посмотрите еще раз повнимательнее — о том, как я разобрался с насущными задачами
Цель была поставлена при решении рабочей задачи, а спортивного вопроса — разбираюсь или нет — не стояло вообще.
Общие фразы вашего комментария отнюдь не свидетельствуют о том, что вы разбираетесь в этом больше…
Странно. Если разбираетесь — напишите как и в чем в отдельном посте. Понимаю, что клеить ярлык проще…
Предложите решение лучше — с удовольствием почитаю и приму на вооружение!
Изначально было так и реализовано, только без наблюдателя. В самой модели писался метод cleanCache, который и отвечал за чистку кэша view.
Постараюсь объяснить на примере.
Возьмем к примеру пользователя. У нас есть модель его самого, модель аватарки, картинок, профайла и т.д. и 10 разных блоков с этими данными в разных комбинациях. Пользователь сменил пол и мне надо сбросить во всех 10 блоках кэш, сменил город — в 8, аватарку — 5 и т.д. Добавили еще блок, бежим по всем классам, меняем метод cleanCache. Дизайн поменялся, опять меняем методы чистки кэша. К тому же на сайте не только юзер ;)
Да можно сделать наблюдателя, попытать упростить все это дело. Но зачем?
Понимаете, мы изменили подход. В шаблон приходят данные уже из кэша. Мне не надо думать о связях. О валидации. Модель все сделает за меня.
С трудом могу представить где может сильно выйграть мемкеш, за счёт уменьшения объёма данных в несколько раз
а мы и не говорим о сильном выиграше. Просто приятно когда объем кэша уменьшается с 400 мб до 100Мб.
как могут добавить проблем сложные шаблоны — вполне представляю
Согласен. Но в Symfony пока нет шаблонизатора. Все пишется в php. Некоторые партиалы/компоненты конечно приходится кэшировать. Тем не менее сопровождать проект стало легче. Ведь основной причиной перехода на кэширование модели была простота валидации данных.
Есть просто некоторые вещи, которые неудобно делать. А именно, проекты где контент меняется в зависимости от авторизации пользователя. Причем когда этого контента много. Как в случае с хабром. И то это проблема больше реализации кэша, чем самого Symfony. Ничто не мешает написать свою оболочку.
Там и там последние публикации с одинаковым набором данных: заголовок, автор, блог.
Естественно это сравнение приблизительно!
Мое хобби. Первый проект на Symfony2. Дизайн и программирование — моё. Еще и пишу статьи.
Из access.log
Из моего кэтчера пауков:
Код кэтчера такой:
Получается робот все спрашивает как надо!
Это примерный показатель. Его можно увеличивать примерно на 25%. Тут уже стоит экспериментировать.
Источники,
Арнольд Шварценеггер: секреты атлетического режима,
Что я делаю не так? 10 ошибок в фитнесе
У моего друга есть следующая программа тренировок:
всю рабочую неделю есть обезжиренный творог без всяких добавок, например сахара. Иногда вместо творога, можно есть фасоль, гречку или куриные грудки. Но в основном творог. В день примерная норма 1 кг творога. Есть не сразу, а желательно каждые 2-3 часа.
На выходных есть все что душе захочется и в любых количествах.
Я как разработчик проникся уважением.
Многопоточные сервера писать это вам не плюшки в магазине покупать.
Эх, мне бы такую производительность.
написал я ее потому, что проект этот стало приятно разрабатывать. поделился радостью так сказать.
а тех подробностей на хабре и так хватает )
Лучше не использовать звездочки (*) при чистке кэша при условии использования memcache. Так как при удалении со звездочкой используется метод removePattern, который проходит по всем ключам из кэша и удаляет нужные по маске. Так вот хранятся эти все ключи там же в memcache в отдельной записи [prefix]_metadata c expire равной 0. Может случится ситуация, когда объем записи превысит лимит. ( у меня случилось к слову ) А дальше у сами додумайте ).
Отключить сохранение ключей в одну запись можно параметром:
storeCacheInfo: true
В версия symfony < 1.2.9 эти ключи добавлялись даже без удаления дубликатов:
Сейчас ситуация лучше, ключи удаляются:
Или вы можете переопределить обработчик генерации ключей. В settings.yml сразу после .settings определить параметр cache_namespace_callable.
Например
cache_namespace_callable: [«CacheGenerator», «generateCacheKey»]
Книга сборник историй, рассказанных странными людьми. Людьми не похожими на остальных. Странными, колеками с точки зрения общества. Те кому понравился Коэлье, оценят и эту книгу.
Еще у этого автора понравился небольшая повесть «Страшный суд»
«Бизнес + Креатив. Преодолеть невидимые барьеры» Гогац, Мондехар
p.s. Вот только не знаю в знак благодарности минусовать вас или плюсовать :)
Знаете, эта фраза поставила меня в тупик. Объясню почему — цикл моих статей не о том, в чем я слабо разбираюсь или не разбираюсь. Они, если вы посмотрите еще раз повнимательнее — о том, как я разобрался с насущными задачами
Цель была поставлена при решении рабочей задачи, а спортивного вопроса — разбираюсь или нет — не стояло вообще.
Общие фразы вашего комментария отнюдь не свидетельствуют о том, что вы разбираетесь в этом больше…
Странно. Если разбираетесь — напишите как и в чем в отдельном посте. Понимаю, что клеить ярлык проще…
Предложите решение лучше — с удовольствием почитаю и приму на вооружение!
Постараюсь объяснить на примере.
Возьмем к примеру пользователя. У нас есть модель его самого, модель аватарки, картинок, профайла и т.д. и 10 разных блоков с этими данными в разных комбинациях. Пользователь сменил пол и мне надо сбросить во всех 10 блоках кэш, сменил город — в 8, аватарку — 5 и т.д. Добавили еще блок, бежим по всем классам, меняем метод cleanCache. Дизайн поменялся, опять меняем методы чистки кэша. К тому же на сайте не только юзер ;)
Да можно сделать наблюдателя, попытать упростить все это дело. Но зачем?
Понимаете, мы изменили подход. В шаблон приходят данные уже из кэша. Мне не надо думать о связях. О валидации. Модель все сделает за меня.
а мы и не говорим о сильном выиграше. Просто приятно когда объем кэша уменьшается с 400 мб до 100Мб.
Согласен. Но в Symfony пока нет шаблонизатора. Все пишется в php. Некоторые партиалы/компоненты конечно приходится кэшировать. Тем не менее сопровождать проект стало легче. Ведь основной причиной перехода на кэширование модели была простота валидации данных.