У меня есть приложение, которое нуждается в кэшировании больших объемов данных (иногда даже МБ) по многостраничному запросу (для одного и того же пользователя / сеанса). После некоторого поиска в Google и т. Д. Я пришел к выводу, что лучше всего реализовать механизм кэширования, записывая файлы кэша на диск (исправьте меня, если вы считаете, что есть лучшие альтернативы).
Теперь моя идея заключалась в том, чтобы создать папку корневого кэша, в которой я создаю папки для каждого идентификатора сеанса, чтобы не перезаписывать какие-либо кэшированные данные, используемые в отдельных сеансах. Затем для каждого блока данных я создам уникальный идентификатор, который можно связать с данными всякий раз, когда я хочу получить их снова. Затем данные будут сериализованы в строковый формат (с использованием PHP-функции serialize по умолчанию), после чего они будут записаны в соответствующий файл.
То, что я не очень уверен в том, как реализовать, - это очистка кэшированных файлов. В какой-то момент либо данные больше не нужны, например, когда сеанс истек, или по ряду других причин. Так как это может потребовать слишком много времени для проверки этого во время каждого запроса страницы, я ожидаю, что придется делать это внешне, используя какой-то планировщик. Однако я не могу гарантировать, что мое приложение будет работать в среде UNIX, поэтому мне придется учитывать и другие платформы (Windows, Mac). Есть ли общее решение, которое каждый может придумать, было бы кроссплатформенным без особых хлопот?
Я также думаю, что, возможно, существует способ разумной проверки или пометки определенных файлов для очистки без необходимости проверять все существующие файлы отдельно. Я подумывал, может быть, сохранить их последнюю использованную метку времени или что-то в этом роде, но могут быть и другие критерии, помимо времени, которые могут сделать кэшированные данные устаревшими, например, исключение, вызываемое в приложении (хотя я мог бы сказать, что всякий раз, когда это происходит, весь кэш что сеансы будут опустошены или что-то в этом роде.
Буду очень признателен за любые предложения по этим вопросам!