Итак представим что у вас или у вашего клиента большой, высоко-посещаемый сайт. Также представим инфоблок в котором больше 80k элементов. Наверняка у этих элементов есть детальное описание и я уверен 99,9% что ID кэша это ID элемента инфоблока.
Итак у нас получается что в папке допустим /bitrix/cache/object_80k/ - 80 000 папок с кэшем, т.е.
Какой бы у вас не был сервер, поиск папки в общем списке из 80k занимает время. Плюс если сайт посещаемый то вы догадываетесь что происходит, нагрузка на ровном месте, даже в том месте, где мы пытаемся ее уменьшить.
Итак функция создаст путь вида /object_80k/as/df/ID и тем самым разобьет 80k папок на под папки, тем самым уменьшит время поиска кэша и общую нагрузку на сервер.
Кладет, только в стандартных компонентах он id прогоняет через md5, что создает трудности, если вам понадобиться программно обновить кэш для определенного элемента. В приведенном выше примере можно без труда это сделать.
При пробном тестирование memcache не обнаружился какой либо выигрыш по производительности + почему то из него постоянно выпадали в файловый кеш самые "загруженные объекты".
Да и объем кеша сейчас составляет порядка 30 Gb
Хотелось еще протестировать хранение кеша в eAccelerator но в последних версиях в нем убрали данный функционал
Тут Деонис предлагал идею создания тега кеша. Ну и, так как Максим заинтересовался, я думаю это не за горами. Что решит ну просто массу проблем. В частности сделает ненужным создание кеша в отдельной папке.
Битрикс сам по себе создает довольно большую нагрузку на файловую систему, и не зачем ее еще увеличивать чтением/записью файлового кеша. Выигрыш при использовании memcache - уменьшение нагрузки на диск.
во первых сам по себе битрикс особую нагрузку на файловую систему не создаст за счет APC/eAccelerato и.т.д.
во вторых получаем дополнительные накладные расходы при транспорте по tcp
в чем несомненное преимущество memcache так это в том что можно сделать общий кеш для нескольких серверов в случае если используеться несколько серверов web серверов под один проект.
Мысль в том, что бы ИД элемента был в пути кеша, тем самым у каждого элемента будет своя папка в которой будет 1 файл кеша, хотя сейчас посмотрел у Вас вроде так и есть, но вот не понимаю зачем тогда __getGenerationCachePatch
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».