One key component for efficient opportunistic device-to-device (D2D) deployment is cache management. It determines which content to store opportunistic D2D communications. Existing solutions focus on the nature of content or mobility attributes, but most of them neglect their joint influence. Moreover, most solutions rely on a preloading phase, filling caches with content that the respective users may not consume, but that may be of interest to other nodes, and increasing traffic overhead in the core network. Further, a popular file may be a lousy candidate for opportunistic D2D because contact opportunities may not provide enough transfer capacity. To solve this issue, we propose a model that computes priority values based on both content and mobility attributes. Our approach considers only files that users have consumed, therefore eliminating a preloading phase. Using real-world and synthetic mobility traces, we compare our solution with Least Recently Stored replacement, as well as a state-of-the-art approach that also considers content and mobility attributes. Results show an increase in the global cache hit rate of almost 80% in scenarios that offer many files, and of around 420% in scenarios with a few users. The priority model generates 90% lower overhead in terms of the control bytes. We also apply our solution in a chunk-based adaptive video streaming application. We observe that our solution leads to higher video delivery ratios when compared to the baselines.