После установки RestBase с использованием стандартной конфигурации у меня есть рабочая версия сводного API.
Проблема в том, что механизм кэширования мне кажется странным. Фрагмент кода решит, следует ли смотреть на кеш таблицы для быстрого ответа. Но я не могу сделать так, чтобы серверный кеш зависел от некоторого ограничения по времени (например, максимальный возраст при записи кеша). Это означает, что решение использовать кэш или нет полностью зависит от клиентов.
Может ли кто-нибудь объяснить рабочий процесс механизма кэширования RestBase?
// Inside key.value.js
getRevision(hyper, req) {
//This one get the header from client request and decide to use cache
or not depend on the value. Does it mean server caching is non-existent?
if (mwUtil.isNoCacheRequest(req)) {
throw new HTTPError({ status: 404 });
}
//If should use cache, below run
const rp = req.params;
const storeReq = {
uri: new URI([rp.domain, 'sys', 'table', rp.bucket, '']),
body: {
table: rp.bucket,
attributes: {
key: rp.key
},
limit: 1
}
};
return hyper.get(storeReq).then(returnRevision(req));
}
Аннулирование кеша выполняется служба распространения изменений, который запускается при редактировании страницы и подобных событиях. Заголовки управления кэшем, вероятно, установлены в логике Лак VCL. Полную диаграмму инфраструктуры Викимедиа см. в здесь — она устарела, но дает общее представление о том, как все взаимосвязано.
Что ж, аннулирование всегда должно полагаться на другую инфраструктуру, поскольку сама RESTBase не может знать, когда аннулировать. Если вы имеете в виду истечение срока действия, я уверен, что его можно настроить с помощью промежуточного программного обеспечения, но поведение по умолчанию основано на том, как его использует Викимедиа, поскольку оно в первую очередь предназначалось для внутреннего использования.
Установка Mz wikimedia небольшая, она следует стандартному руководству, и я не думаю, что они используют Kafka для службы распространения изменений. Означает ли это, что RESTBase не имеет встроенной инвалидации кэширования, а полагается на другую инфраструктуру?