Я написал роутинг, который берет значения из БД (чтобы при изменении в БД не пришлось менять код). Но это замедляет сайт. Как лучше закешировать это?
Я никогда ничего не кешировал. В интернете так много статей и разные способы используются. Какой способ лучше мне использовать?
Я хочу, чтобы при первом же запросе к БД к таблице pages создавался кеш. Дальше вся информация для роутинга бралась из него, а не из БД.
Если разработчик меняет БД (например, переименовал страницу catalog в items), то он должен удалить кеш (чтобы сайт заново закешировал результаты выборки из БД).
Как мне это сделать? Просто если файла с кешом роутинга не существует, то создавать его? И заносить туда результаты выборки из БД? А если существует, то парсить этот файл?
Я хочу, чтобы при первом же запросе к БД к таблице pages создавался кеш.
Если Вы используете MySQL - она по умолчанию умеет кэшировать результаты запросов. Конечно, можно закешировать данные дополнительно, но, скорее всего это не даст "вау-эффекта" в Вашем случае.
sorry_i_noob, с этим "не надо" работать, в том плане, что кэш запросов обычно работает "из коробки". Иными словами, от Вас каких либо действий (ну кроме, разве что настройки всего этого дела "под себя", в случае необходимости) не требуется. Как работает кэш запросов, и как посмотреть насколько он используется - Вы можете прочесть например тут.
так.. если уже пошли такие извращения..
А если вы поменяете бд на статичный файл?
То есть хранить значения роутинга в текстовых файлах и изменять их через админку(или в ручную) в случае чего.
Возможно скорость будет быстрее.. но не факт.
А в целом выглядит как глупая затея всё это.
sorry_i_noob, я последний раз хостера с ограниченными возможностями видел лет 100 назад. Очень быстро перешел на VPS по тому как под нужные задачи как правило всегда чего-то не хватает. Советую вам изучить этот вопрос самостоятельно.
PS неплохо понимать все на уровне контракта между своим приложением и сервисом, но очень редко этого достаточно