[buddypress-trac] [BuddyPress Trac] #7436: Very slow check_is_friend function

buddypress-trac noreply at wordpress.org
Thu Feb 22 19:41:05 UTC 2018


#7436: Very slow check_is_friend function
--------------------------+-------------------------------------
 Reporter:  januzi_pl     |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  high          |   Milestone:  Awaiting Contributions
Component:  Friends       |     Version:  2.7
 Severity:  major         |  Resolution:
 Keywords:  dev-feedback  |
--------------------------+-------------------------------------

Comment (by dcavins):

 Hi all-

 I've added a new patch that changes
 `BP_Friends_Friendship::check_is_friend()` so that it does not loop
 through the big friends list each time. I've added a customized bulk cache
 warmer that acts like a `_get_non_cached_ids()` for a list of maybe-friend
 users, and caches individual friendships as Boone and Ray has discussed
 using our incremented cache helpers and the two users as the cache key,
 like `'initiator_user_id:friend_user_id'`.

 I've also added a new general cache function,
 `bp_core_delete_incremented_cache()` to remove these cached items by key
 when a friendship is updated.

 Finally, this change doesn't replace the user-specific friendship cache as
 introduced in 2.5. I think there's still value to having that cached,
 since it is used in friendship calls that refer to all friendships for a
 user. The problem was that hoisting that load for 20 `check_is_friend()`
 calls was too unwieldy. There seem to me to be two different things going
 on: friendships from the perspective of a particular user, and the simple
 check, "Are these two users friends?"

 Thanks for your comments,

 -David

--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/7436#comment:18>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac


More information about the buddypress-trac mailing list