Date: 2019-10-09
Accepted
JMAP core RFC8620 requires that the server responds only properties requested by the client.
James currently computes all of the properties regardless of their cost, and if it had been asked by the client.
Clearly we can save some latencies and resources by avoiding reading/computing expensive properties that had not been explicitly requested by the client.
Introduce two new datastructures representing JMAP messages:
Given the properties requested by the client, the most appropriate message datastructure will be computed, on top of existing message storage APIs that should remain unchanged.
Some performance tests will be run in order to evaluate the improvements.
GetMessages with a limited set of requested properties no longer result necessarily in full database message read. We thus have a significant improvement, for instance when only metadata are requested.
Given the following scenario played by 5000 users per hour (constant rate)
We went from: