Добрый день. Вопрос по кешированию PHP. Вводные данные: Сайт работает с таблицей, где на текущий момент 70к записей, и это число очень быстро растет. После выборки и перед выводом данные проходят некую обработку (прогон в цикле, математические операции и т.п), поэтому что бы снизить нагрузку на сервер возникла идея кешировать результат, что бы каждый раз не брать с базы и не повторять обработку. Собственно само кеширование PHP: public function set($key, $data, $seconds = 3600){ if($seconds){ $content['data'] = $data; $content['end_time'] = time() + $seconds; if(file_put_contents(CACHE . '/' . md5($key) . '.txt', serialize($content))){ return true; } } return false; } Вопрос 1): кеш идет в текстовые файлы, и будет ли все это дело нормально работать, когда таких файлов будет, скажем 500к Вопрос 2) Верна ли моя теория, что при использовании кеша и обхода выборки и обработки данных из бд можно снизить нагрузку и повысить скорость.
В эпоху SSD не смысла хранить кеш на файлах, БД - это такие же файлы на таком же SSD, бери и обращайся к ним, они для этого и созданы
Ну, в принципе, идея здравая, сама по себе. Если затраты на некую обработку велики, то стоит обработанное и частозапрашиваемое хранить в отдельной таблице. Периодически её обновляя.
Если сервер свой, можно посмотреть в сторону кэширования средствами самого PHP (Opcache), файлы цеплять через require/require_once, в общем случае хранить в БД тоже имеет смысл. И обязательно следить за актуальностью кэша.
Кешируются готовые выборки, поэтому какой-то смысл есть. Особенно если действительно необходима дообработка выборки на PHP, и это доработка ресурсоёмкая. Видел реализации кеша на базе - в отдельную таблицу для кеша. Суть в том, чтоб не делать повторно тяжёлые выборки. Хотя лучше использовать тогда какой-нибудь Redis, чтоб кеш был в оперативе, и быстрее доступен. И да, базу тоже не дураки писали, какое-то кеширование есть прямо на уровне базы.