Вот пример Grails кода с одногой статьи
class BookController {
def show = {
withCacheHeaders {
def book = Book.get(params.id)
etag {
"${book.ident()}:${book.version}"
}
lastModified {
book.dateCreated ?: book.dateUpdated
}
generate {
render(view:"bookDisplay", model:[item:book])
}
}
}
}
Оно генерит etag. Но как это что-то ускорит? Потом клиент присылает запрос, и даже если там есть if-none-match, то сервер все равно ведь выполнит запрос и полезет в базу. Как он узнает что сущность не поменялась или поменялась?
Если дело лишь в том чтобы просто не отправлять по сети потенциально большой обьект, то так и скажите.
Можно ли как-то использовать Etag для того, чтобы запрос оставался на фронтэнде? Пока метода не вижу.
Существует ли технология, которая уведомит фронтэнд, что мол уже сущность поменялась, Etag новый, старый - не валидный уже, перечитайте пожалуйста. Пока то что я знаю просто пингует сервер, но тогда может образоваться окно с устаревшей инфой