Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Советы по кэшированиею.
 
 автор: diablo_   (05.03.2012 в 22:14)   письмо автору
 
 

Всем привет.
спорим тут с другом по поводу кэширования!
А именно вот о чём.
Делаю я например форум, есть пост форума, есть юзеры, колво постов у юзера, его репутация, и другие разные параметры которые частенько меняются.
Так же есть его пост (текст сообщения).
И появляется задача. Над каждым постом пользователя проводить какие то изменения, именно над постом. Ну например обрабатывать в нём ББтеги и прочую чепуху. Искать мать.
Что означает, что при каждом выводе страницы, надо будет обрабатывать каждый пост.
он предлагает сделать кеширование постов или страницы целиком. То есть сделать её копию в html формате. Я убеждён, что это прошлый век. И проще либо сделать зеркало таблицы и зранить там изменённые посты, либо просто увеличить мощность сервера.
А работы над постом может быть много! Например проверка на мат. А в базе матерных слов может быть и 1000 штук!)

Что скажите?)

  Ответить  
 
 автор: Valick   (05.03.2012 в 23:10)   письмо автору
 
   для: diablo_   (05.03.2012 в 22:14)
 

А в базе матерных слов может быть и 1000 штук!
:) велик и могуч наш русский язык
если у вас матершина меняется на звездочки по средствам РНР, то я бы лично не стал держать словарь в БД

  Ответить  
 
 автор: Diablo_   (06.03.2012 в 00:02)   письмо автору
 
   для: Valick   (05.03.2012 в 23:10)
 

Мат это просто пример)))
А на что бы он не менялся.....но вот исходные слова (искомые) то где держать?)))) В файлика х что ли?)) В бд конечно.

  Ответить  
 
 автор: Valick   (06.03.2012 в 00:15)   письмо автору
 
   для: Diablo_   (06.03.2012 в 00:02)
 

В файлика х что ли?)) В бд конечно.
и извлекать их каждый раз, причем в полном объёме, какой в этом смысл?
я бы держал именно в файлике
может я чего-то не знаю и вы можете провести замену слов налету при выборке?
не одного при помощи REPLACE(), а всех сразу по мат-словарю
имеется ввиду так чтобы цель оправдывала средства

  Ответить  
 
 автор: Diablo_   (06.03.2012 в 01:12)   письмо автору
 
   для: Valick   (06.03.2012 в 00:15)
 

Ещё раз повторюсь, мат слова просто пример. Представьте себе что это будут не мат слова, а допустим таблица со списком пользователей, с их именами. А в тексте присутствуют эти имена. Вот и надо будет найти их и заменить на данные из базы.
То есть база с именами всегда будет увеличиваться она не статична. Была бы статична можно было бы просто использовать массив.
Так же, в таблице с этими пользователями, постоянно меняются данные и добавляются.
А значит хранить их в одно файле - не реал. Покажу пример:

SELECT `id`, `user_name` FROM `users`
//обрабатываем данные
while(.......)
{
   $peremen = str_ireplace('user_name из базы', 'меняем на ссылку с айди и именем юзера', 'текст в котором ищем');
}
echo преобразованные текст

  Ответить  
 
 автор: cheops   (06.03.2012 в 13:50)   письмо автору
 
   для: diablo_   (05.03.2012 в 22:14)
 

Вообще затея не очень здравая, особенно, если у вас пока нет проблем с производительностью. Вы модель и представление смешиваете в одну кучу - это потом породит множество проблем и затратит массу вашего времени. Заранее очень сложно производительность повышать, тем более вот такими методами. Кстати, если будете хранить в html - не вздумайте все сообщения хранить в одной папке - это производительность точно снизит.

Вообще профессионалы так не поступают. Обычно создают обратный кэширующий сервер, который настраивают так, что он кэширует все, что не изменяется в размере. Поэтому ваши страницы осядают на нем автоматически, база и web-сервер дергаются только когда произошло какое-то изменение (про картинки, JS и CSS вообще речи нет, их кэшировать даже браузеры умеют, не говоря про обратный прокси-сервер). Вот здесь например сделано именно так. 100 человек могут просматривать тему, лишь один запрос пойдет к Web-серверу - остальным будет выдан HTML-код с прокси-сервера. При этом если появится новая тема, будет отправлен запрос, который обновит файл на прокси-сервере. При этом мы палец о палец не ударили, чтобы это организовать - эту возможность предоставляет виртуальный хостинг (всем, его специально просить нужно, чтобы отключили). Т.е. вы потратите кучу времени и усилий, повесите себе хомут на шею, в условиях когда этого и делать-то не стоит... Поэтому крайне рекомендуется такими вещами заниматься тогда, когда вы уже видите: тормозит и можете по логам посмотреть где тормозит и что (по тому что в 95% случаев тормозить будут не SELECT, а INSERT-запросы).

  Ответить  
 
 автор: Sfinks   (06.03.2012 в 14:52)   письмо автору
 
   для: cheops   (06.03.2012 в 13:50)
 

Десять раз смотрел эту тему, но даже не подумал про такое решение ) А теперь, прочитав сообщение cheops'a, сообразил..... Для ребят промежуточный сервер возможно не подойдет по стоимости, но зато можно задействовать кеширование браузером, Last-Modified и If-Modified-Since. Результат будет почти тот же, но проверка не по размеру, а по дате последнего сообщения и если она не изменилась будет возврат "Not Modified".

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования