Я использую для этого curl lib и расширение easy_curl.Сейчас я собираюсь пропустить код, так как не думаю, что это необходимо для объяснения проблемы.Я использую c ++ и curl lib для получения сериализованного прототипа Google с сервера.Сериализованный протобуфф содержит целое число и статический массив объектов.Скомпилированный протобуфф выглядит так:
typedef struct _ExperimentRunner_ExperimentList_RES {
int32_t pollFrequency;
pb_size_t activeExperiments_count;
ExperimentRunner_ExperimentInfo activeExperiments[5];
/* @@protoc_insertion_point(struct:ExperimentRunner_ExperimentList_RES) */
} ExperimentRunner_ExperimentList_RES;
При тестировании все работает нормально, и протобуфф извлекается с сервера и анализируется правильно.Запрос get предназначен для данных, а не файла с сервера.
Код настроен таким образом, что список экспериментов извлекается при каждой частоте опроса.Проблема заключается в следующем сценарии
- запуска приложения и получения списка экспериментов, который в настоящее время имеет одну запись
- удалить запись из базы данных сервера, подождите, пока приложение повторно опроситсервер
- Приложение видит ответ сервера, все еще содержащий запись, которая была удалена.Я подтверждаю его удаление, выполняя curl из командной строки
Кажется, есть проблема с библиотекой curl, которая кэширует результат данных с сервера, а затем возвращает его, когда я делаю запрос.так как, когда я перезапускаю приложение, оно получает правильные данные.Я реализовал CURLOPT_DEBUGFUNCTION и вижу старые данные, возвращаемые запросом, когда я знаю, что сервер удалил их из базы данных.Любые предложения, какие опции или кеширование могут вызывать это?