A distributed architecture for implementing online social networks (OSNs) can overcome several disadvantages of the now popular centralized online social networks such as Facebook or Twitter. Owners of centralized OSNs control all of the individuals'data and associated policies on dissemination of data. Hence, individuals can hardly exert control of their personal data, resulting in serious potential privacy violations. Distributed OSNs, where each individual hosts their personal data, provide greater control of ownership of personal data. However, for distributed OSNs to be scalable, methods that optimize peerto- peer data dissemination need to be developed. In this paper, we introduce Social Caches as a way to alleviate the peer-to-peer traffic that would ensue in a distributed OSNs. Social caches act as local bridges among friends for efficient information delivery. We provide a novel social communication model, Social Butterfly, for distributed OSNs that utilize social caches. We further formulate social cache selection as the Neighbor-Dominating Set Problem, and propose two algorithms to solve it: 1) Approximate NDS, and 2) Social Score algorithm. Performance evaluation based on real social traffic data shows that both algorithms reduce peer-to-peer social traffic by an order of magnitude.