@Dubrovin

Как подключить JSON файл с кешированием для передачи данных в JS?

Часто возникают задачи в JS, связанные с обработкой каких-либо больших данных, например, список всех Google-шрифтов с параметрами, данные иконок иконпака включая svg и тому подобное. Данные эти удобно хранить в отдельных json файлах.
Задача подключения и передачи в JS данных из JSON решается "в лоб" объявлением глобальной переменной с данными из PHP:
echo '<script>let gfonts = ' . file_get_contents( 'путь к JSON файлу' ) . ';</script>';

Однако в данном случае эти данные никак не кэшируются браузрером. Хотелось бы подключить JSON файл по URL и иметь возможность работы с ним из JS. Вариант конвертации JSON в JS не подходит, потому что данные требуются для скриптов PHP (в PHP с JSON работать удобно).
Как решить задачу подключения JSON с кешированием?
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 4
Robur
@Robur
Знаю больше чем это необходимо
Хотелось бы подключить JSON файл по URL и иметь возможность работы с ним из JS.

Так и сделайте к нему прямой доступ по ссылке и дергайте аяксом, кто ж вам не дает.
С правильными заголовками - будет кешироваться браузером наравне с картинками/css и прочим.

Если не хочется дергать аяксом - то сделайте отдельную php страницу которая будет отдавать эти данные в виде js-скрипта и подключайте тегом "
<script src="http://myserver/path-to-file.php"></script>
",
в path-to-file.php
echo 'let gfonts = ' . file_get_contents( 'путь к JSON файлу' )';
Ответ написан
@Otrivin
junior full-stack сисадмин
Можно попробовать хранить в localStorage; если в нем не сохранен - подтягивать с сервера
Ответ написан
Комментировать
@grinat
<script id="data" type="application/json">{"org": 10, "items":....... 

var data = JSON.parse(document.getElementById('data').innerHTML)
Ответ написан
Предполагаю, что вам нужна подобная конструкция
https://ruhighload.com/%D0%9A%D0%B0%D0%BA+%D0%B2%D...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы