|
|
|
| Всем привет.
спорим тут с другом по поводу кэширования!
А именно вот о чём.
Делаю я например форум, есть пост форума, есть юзеры, колво постов у юзера, его репутация, и другие разные параметры которые частенько меняются.
Так же есть его пост (текст сообщения).
И появляется задача. Над каждым постом пользователя проводить какие то изменения, именно над постом. Ну например обрабатывать в нём ББтеги и прочую чепуху. Искать мать.
Что означает, что при каждом выводе страницы, надо будет обрабатывать каждый пост.
он предлагает сделать кеширование постов или страницы целиком. То есть сделать её копию в html формате. Я убеждён, что это прошлый век. И проще либо сделать зеркало таблицы и зранить там изменённые посты, либо просто увеличить мощность сервера.
А работы над постом может быть много! Например проверка на мат. А в базе матерных слов может быть и 1000 штук!)
Что скажите?) | |
|
|
|
|
|
|
|
для: diablo_
(05.03.2012 в 22:14)
| | А в базе матерных слов может быть и 1000 штук!
:) велик и могуч наш русский язык
если у вас матершина меняется на звездочки по средствам РНР, то я бы лично не стал держать словарь в БД | |
|
|
|
|
|
|
|
для: Valick
(05.03.2012 в 23:10)
| | Мат это просто пример)))
А на что бы он не менялся.....но вот исходные слова (искомые) то где держать?)))) В файлика х что ли?)) В бд конечно. | |
|
|
|
|
|
|
|
для: Diablo_
(06.03.2012 в 00:02)
| | В файлика х что ли?)) В бд конечно.
и извлекать их каждый раз, причем в полном объёме, какой в этом смысл?
я бы держал именно в файлике
может я чего-то не знаю и вы можете провести замену слов налету при выборке?
не одного при помощи REPLACE(), а всех сразу по мат-словарю
имеется ввиду так чтобы цель оправдывала средства | |
|
|
|
|
|
|
|
для: Valick
(06.03.2012 в 00:15)
| | Ещё раз повторюсь, мат слова просто пример. Представьте себе что это будут не мат слова, а допустим таблица со списком пользователей, с их именами. А в тексте присутствуют эти имена. Вот и надо будет найти их и заменить на данные из базы.
То есть база с именами всегда будет увеличиваться она не статична. Была бы статична можно было бы просто использовать массив.
Так же, в таблице с этими пользователями, постоянно меняются данные и добавляются.
А значит хранить их в одно файле - не реал. Покажу пример:
SELECT `id`, `user_name` FROM `users`
//обрабатываем данные
while(.......)
{
$peremen = str_ireplace('user_name из базы', 'меняем на ссылку с айди и именем юзера', 'текст в котором ищем');
}
echo преобразованные текст
|
| |
|
|
|
|
|
|
|
для: diablo_
(05.03.2012 в 22:14)
| | Вообще затея не очень здравая, особенно, если у вас пока нет проблем с производительностью. Вы модель и представление смешиваете в одну кучу - это потом породит множество проблем и затратит массу вашего времени. Заранее очень сложно производительность повышать, тем более вот такими методами. Кстати, если будете хранить в html - не вздумайте все сообщения хранить в одной папке - это производительность точно снизит.
Вообще профессионалы так не поступают. Обычно создают обратный кэширующий сервер, который настраивают так, что он кэширует все, что не изменяется в размере. Поэтому ваши страницы осядают на нем автоматически, база и web-сервер дергаются только когда произошло какое-то изменение (про картинки, JS и CSS вообще речи нет, их кэшировать даже браузеры умеют, не говоря про обратный прокси-сервер). Вот здесь например сделано именно так. 100 человек могут просматривать тему, лишь один запрос пойдет к Web-серверу - остальным будет выдан HTML-код с прокси-сервера. При этом если появится новая тема, будет отправлен запрос, который обновит файл на прокси-сервере. При этом мы палец о палец не ударили, чтобы это организовать - эту возможность предоставляет виртуальный хостинг (всем, его специально просить нужно, чтобы отключили). Т.е. вы потратите кучу времени и усилий, повесите себе хомут на шею, в условиях когда этого и делать-то не стоит... Поэтому крайне рекомендуется такими вещами заниматься тогда, когда вы уже видите: тормозит и можете по логам посмотреть где тормозит и что (по тому что в 95% случаев тормозить будут не SELECT, а INSERT-запросы). | |
|
|
|
|
|
|
|
для: cheops
(06.03.2012 в 13:50)
| | Десять раз смотрел эту тему, но даже не подумал про такое решение ) А теперь, прочитав сообщение cheops'a, сообразил..... Для ребят промежуточный сервер возможно не подойдет по стоимости, но зато можно задействовать кеширование браузером, Last-Modified и If-Modified-Since. Результат будет почти тот же, но проверка не по размеру, а по дате последнего сообщения и если она не изменилась будет возврат "Not Modified". | |
|
|
|