У меня есть общий вопрос, связанный с кэшированием вызовов API, в этом случае вызывает API Github.Кэширование вызовов API Github
Предположим, у меня есть страница в моем приложении, которая показывает имена файлов репо и содержимое README. Это означает, что мне нужно будет сделать несколько вызовов API, чтобы получить это.
Теперь предположим, что я хочу добавить что-то вроде memcached между ними, поэтому я не повторяю эти вызовы снова и снова, если мне это не нужно.
Как бы вы обычно это понимали? Если я не включу webhook в Github, я не знаю, должен ли истекать кеш. Я всегда мог сделать один звонок, чтобы получить текущий sha HEAD, и если он не изменился, используйте кеш. Но это на уровне репо, а не на уровне файлов.
Я могу себе представить, что я мог бы сделать что-то подобное с помощью объекта-ша, но если мне нужно вызвать API в любом случае, чтобы получить их, он победит цель кеширования.
Как вы относитесь к этому? Я знаю, что служба, например prose.io, не имеет кэширования прямо сейчас, но если это так, то каким будет подход?
Благодаря
Спасибо Иван. Отлично. Использование кеша HTTP также означает, что мне не нужен мой собственный API-интерфейс среднего уровня для кэширования данных в memcached. Таким образом, я могу напрямую обращаться через CORS от клиента (возможно, используя локальное хранилище, если это необходимо). – Ronze
Возможно ли, что не все конечные точки из github возвращают заголовок 'Last-Modified'? Например, вызов в конечную точку вехи не возвращает никакого заголовка 'Last-Modified': curl -i https://api.github.com/repos/p1nox/repos/milestones Но возвращает' ETag', поэтому единственный способ кэшировать такие ресурсы - использовать комбинацию token-etag правильно? – p1nox
@ p1nox Да, это возможно. Если вы прочитаете этот https://developer.github.com/v3/#conditional-requests, вы заметите эту часть: «Большинство ответов возвращают заголовок ETag. Многие ответы также возвращают заголовок Last-Modified». Обратите внимание, что в нем говорится «большинство» и «много», а не «все». –