Ну это же обоюдная штука. У тебя есть запрос с некоторым hash Id результата. Бэк выполняет запрос и если хэш ответа совпадает, то он вместо 200 отдаёт 304, типа используй результат с этим же хэшешем. На клиенте есть nsurlcache, который тебе поможет хранить результаты запросов, формировать хэш и делать все то, о чем ты говоришь