Caching techniques for reducing the communication cost of federated learning in IoT environments