Для сайта есть различные параметры, которые могут меняться со временем. Хранить их в БД? Делать таблицу с единственной строкой, где имя полей - ключи, а содержимое единственной строки - значения? Так делают? Или хранить в файле в json-e? Как оптимальнее? Если в файле, подскажите, как его кэшировать и обновлять кэш при изменении информации в файле.
Нет универсального правильного решения, у каждого свои достоинства и недостатки.
Если речь о настройках сайта, которые используются при каждом запросе - то данные лучше хранить как константу в коде. Если это пользовательские настройки, которые будут переписываться с фронтенда - то логичнее писать их в базу. Если эти данные используются одной страничкой раз в месяц - можно и в файл...
ComodoHacker, БД всегда доступна, на одном сервере с сайтом. Это даже не только параметры, а в основном часть контента, которая редактируется через самописную админку.
Adamos, это скорее динамический контент, который можно редактировать в админке, нужен всегда, но изменяется редко. Поэтому дополнительный вопрос про кэширование
DmitryUlitin, лучше загоните в базу. Только сделайте не таблицу с одной строчкой, а таблицу "имя - значение". Глядишь, еще для каких записей пригодится. И кэшироваться она будет без всякой суеты с вашей стороны.
Adamos, Я тоже так думал, два поля key и value, где key - уникальное значение. Вот только value может иметь разный формат, где 1/0, где числа, где короткий текст, где длинный... Получается нужно сделать несколько полей для значений: value_bool, value_int, value_long_text, value_text...? Выглядит колхозно) Либо все значения хранить в формате длинного текста
DmitryUlitin, пока у вас нет булевых значений - не надо пытаться их предусматривать. Вам нужна строка? Вот ее и пишите.
Я вам скажу страшное: в Битриксе с самого начала все булевы значения в базе пишутся как строка "Y" / "N". Нет, я не предлагаю подражать Битриксу, но, внезапно, неразрешимой проблемой именно это за полтора десятка лет так и не стало.