У меня есть устройство IoT, которое загружает файл JSON с веб-сервера. Значение в файле JSON изменяется веб-страницей на основе PHP / HTML. Файл на сервере настроен на 777 разрешений и правильно меняет значение. Однако, когда мое IoT-устройство подключается к серверу для анализа JSON, ему предоставляется копия файла, возраст которого не менее 8 дней. Этот заголовок возвращается:
HTTP/1.1 200 OK.
Content-Length: 15.
Content-Type: application/json.
Server: Apache.
Last-Modified: Mon, 30 Nov 2015 21:28:39 GMT.
Connection: keep-alive.
Date: Tue, 08 Dec 2015 08:22:36 GMT.
.
{"light": "on"}LED ON
closing connection.
Что мне здесь не хватает. Одна возможность, которая приходит на ум, состоит в том, что сервер отправляет обратно кэшированный ответ, вместо того, чтобы реально просматривать свежую версию файла и обслуживать ее.
Так что я думаю, что у вас есть кеширование на сервере больше в вашем IoT устройстве
1) попробуйте проверить свой IoT device
если есть кеширование
2) попробуйте проверить конфигурацию сервера, если он имеет некоторое кэширование
если вы потерпите неудачу, то единственный вариант — создать логику, которая всегда будет генерировать уникальную детскую коляску в конце вашей ссылки в IoT device
и получить JSON с этой ссылкой.
Благодаря помощи @Armen и большому количеству чтения онлайн. Оказалось, что были две проблемы, которые вызывали это:
Я обнаружил, что в PHP простая запись в файл не изменяет его атрибут «последний измененный», и это вызывало проблемы с сервером, отправляющим неправильную версию файла JSON. Чтобы исправить проблему, я добавил touch("path/to/file.json");
после каждого раза код записывал в файл и закрывал указатель файла. Что он сделал, так это обновил последний измененный атрибут файла, тем самым исправив проблему. Я понимаю, что это, вероятно, что-то очень очевидное, но, будучи самим новичком, я думаю, что с этим могут столкнуться многие новички, поэтому я решил поделиться.