Toward caching techniques in edge computing over SDN-IoT architecture: a review of challenges, solutions, and open issues