New XenForo Experience ACE - Download Free

Status
Not open for further replies.
We kinda merged filter into this addon since it was found to be more convenient. So Filter works if you don't want Feeds. If you want Feeds you can disable Filter :p.

If this i am missing filter addon Forum node coloring? Can be run both addon by default?

ScreenShot00394.webp

Also add SP for hide sav-navigation.

ScreenShot00393.webp
 
If this i am missing filter addon Forum node coloring? Can be run both addon by default?

View attachment 255586

Also add SP for hide sav-navigation.

View attachment 255587
Fair point, we didn't add color to Feeds. You'd need Filter for that. Just never got around to it.
Any eta when stable version will be released?
Well I suppose we are not aware of any issues yet. Few people emailed and said it was working well. I think @JulianD had an issue but will need more info there. I was told in your case you will just need to upgrade XenForo this will support latest XenForo 2.2.6 right now, not sure on backwards yet but unlikely.
 
Fair point, we didn't add color to Feeds. You'd need Filter for that. Just never got around to it.

Well I suppose we are not aware of any issues yet. Few people emailed and said it was working well. I think @JulianD had an issue but will need more info there. I was told in your case you will just need to upgrade XenForo this will support latest XenForo 2.2.6 right now, not sure on backwards yet but unlikely.
Yeah. That what I been told. A bit sad that is compatible only with the latest version of XF as I'll need to upgrade and after to buy or try this addon.
 
Haven't had a chance to test things much yet, but I'll just quickly note here that I was initially perplexed as to why clicking my "Forums" link kept taking me to my homepage (not the Feeds page). Maybe don't change the forum default page by default. :unsure:
 
Haven't had a chance to test things much yet, but I'll just quickly note here that I was initially perplexed as to why clicking my "Forums" link kept taking me to my homepage (not the Feeds page). Maybe don't change the forum default page by default. :unsure:
What better way to promote exploration and tinkering, provide a shock. Worked on me!
 
I've also found that none of the "Feeds" sub-menu navigation links work. I had to manually edit all of them.

One other thing while I'm thinking about it: there really needs to be "First message" and "Last message" filter options (or at least the former), otherwise people will have to go to the nodes to filter that way, which sort of defeats the intention (I assume) of having all the filter options in one place. Or is there maybe already an option for it that I've overlooked... ?

EDIT: Okay, sorry, scratch that last part. I realized "Post date" does this effectively, I just wasn't getting any kind of results I could make sense of until I rebuilt my cache. (y)
 
Last edited:
Haven't had a chance to test things much yet, but I'll just quickly note here that I was initially perplexed as to why clicking my "Forums" link kept taking me to my homepage (not the Feeds page). Maybe don't change the forum default page by default. :unsure:
Well I appreciate the humor, this could be a bug in a sense. That said, this IS a new homepage experience...the job is to replace your homepage with a new way of digesting content...
 
Well I appreciate the humor, this could be a bug in a sense. That said, this IS a new homepage experience...
I know Mike, and I appreciate you offering it to the community for free. I'm digging the concept of it so far, just noting some problems as I experience them, just to make you aware of them, and if I don't someone else will. 😁

EDIT: Also, just to be clear, when I say it was taking me to my homepage, I mean it was literally taking me to my homepage. I assume if my forum route was set to the default, it would have worked as intended.
 
One thing that throws me about the UI a bit, is the lack of reply stats at the bottom of the card view (compared to say a fbook feed)

If I'm browsing a feed and I read a post, or even expand it to a long post, once I reach the end of it with would be nice to how many replies there are to the post so I can get a sense of activity and how much more content there is to read associated with that post.

I know there's a reply and view button, but it would be nice to see how many replies down there too. Which, IMO would be the main CTA for the bottom of a card.

1628017272130.png

You could maybe have a View Thread or View OP button, which brings the user to the first post in the thread, as well as a 'View latest post' or 'Go to first unread post', which would be of most interest.

This is one thing that drives me insane about facebook groups in this feed format, that forums can easily resolve. If I see a thread multiple times in my feed over one day or multiple days that gains hundreds of comments,I want to be able to click and jump straight to the latest unread post, not click 10 times to load all the posts and scroll to where I think I read up to, or go straight to the first post. I want to go straight to the latest unread post. They can't really do that because of their threaded comments, but on classic forums you can.

From fbook:

1628018062403.png

It would be even better if it displayed how many unread posts there were in that thread potentially, although I imagine that would be killer to track on big boards.
 
Last edited:
That query generally doesn't look out of the ordinary. Can you elaborate a bit more on how your database/server crashed, ideally with some error logs? We've optimized the queries to be as performant as possible and successfully trialed them on one of the biggest XenForo boards out there (amongst others), so it may be a simple matter of tweaking a few database config values.

The query takes around 1.5 minutes to complete and it locks several tables in my forum, exhausting the PHP processes and crashing the site. The query seems to be dynamic but I can't tell since I haven't had the time to look at the source code, but can you share the same query for other forums to see if I can compare it with mine?
 
The query takes around 1.5 minutes to complete and it locks several tables in my forum, exhausting the PHP processes and crashing the site. The query seems to be dynamic but I can't tell since I haven't had the time to look at the source code, but can you share the same query for other forums to see if I can compare it with mine?

Yes i have same issue with /feeds/threads and I am getting lot of Server error log:

Code:
InvalidArgumentException: Job Audentio\Feeds:Rebuild\LastItemCache: Attempted to convert NULL to integer [event_date] src/XF/Mvc/Entity/Entity.php:759

Generated by: Unknown account Aug 4, 2021 at 1:32 AM

Stack trace

#0 src/XF/Mvc/Entity/Entity.php(637): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'event_date', 2, Array)
#1 src/XF/Mvc/Entity/Entity.php(739): XF\Mvc\Entity\Entity->set('event_date', NULL, Array)
#2 src/addons/Audentio/Feeds/Feed/AbstractHandler.php(480): XF\Mvc\Entity\Entity->bulkSet(Array)
#3 src/addons/Audentio/Feeds/Feed/NewsFeed.php(180): Audentio\Feeds\Feed\AbstractHandler->wrapItems(Object(XF\Mvc\Entity\ArrayCollection), Object(Audentio\Feeds\Entity\Feed))
#4 src/XF.php(613): Audentio\Feeds\Feed\NewsFeed->Audentio\Feeds\Feed\{closure}()
#5 src/addons/Audentio/Feeds/Feed/NewsFeed.php(194): XF::asVisitor(Object(Datio\AllowedEmails\XF\Entity\User), Object(Closure))
#6 src/addons/Audentio/Feeds/Entity/Feed.php(294): Audentio\Feeds\Feed\NewsFeed->getLastItemCache(Object(Audentio\Feeds\Entity\Feed))
#7 src/addons/Audentio/Feeds/Job/Rebuild/LastItemCache.php(46): Audentio\Feeds\Entity\Feed->updateLastItemCache()
#8 src/XF/Job/AbstractRebuildJob.php(47): Audentio\Feeds\Job\Rebuild\LastItemCache->rebuildById(1)
#9 src/XF/Job/Manager.php(258): XF\Job\AbstractRebuildJob->run(8)
#10 src/XF/Job/Manager.php(200): XF\Job\Manager->runJobInternal(Array, 8)
#11 src/XF/Job/Manager.php(84): XF\Job\Manager->runJobEntry(Array, 8)
#12 job.php(43): XF\Job\Manager->runQueue(false, 8)
#13 {main}

-------------

Previous InvalidArgumentException: Attempted to convert NULL to integer - src/XF/Mvc/Entity/ValueFormatter.php:147
#0 src/XF/Mvc/Entity/Entity.php(755): XF\Mvc\Entity\ValueFormatter->castValueToType(NULL, 2, Array)
#1 src/XF/Mvc/Entity/Entity.php(637): XF\Mvc\Entity\Entity->_castValueToType(NULL, 'event_date', 2, Array)
#2 src/XF/Mvc/Entity/Entity.php(739): XF\Mvc\Entity\Entity->set('event_date', NULL, Array)
#3 src/addons/Audentio/Feeds/Feed/AbstractHandler.php(480): XF\Mvc\Entity\Entity->bulkSet(Array)
#4 src/addons/Audentio/Feeds/Feed/NewsFeed.php(180): Audentio\Feeds\Feed\AbstractHandler->wrapItems(Object(XF\Mvc\Entity\ArrayCollection), Object(Audentio\Feeds\Entity\Feed))
#5 src/XF.php(613): Audentio\Feeds\Feed\NewsFeed->Audentio\Feeds\Feed\{closure}()
#6 src/addons/Audentio/Feeds/Feed/NewsFeed.php(194): XF::asVisitor(Object(Datio\AllowedEmails\XF\Entity\User), Object(Closure))
#7 src/addons/Audentio/Feeds/Entity/Feed.php(294): Audentio\Feeds\Feed\NewsFeed->getLastItemCache(Object(Audentio\Feeds\Entity\Feed))
#8 src/addons/Audentio/Feeds/Job/Rebuild/LastItemCache.php(46): Audentio\Feeds\Entity\Feed->updateLastItemCache()
#9 src/XF/Job/AbstractRebuildJob.php(47): Audentio\Feeds\Job\Rebuild\LastItemCache->rebuildById(1)
#10 src/XF/Job/Manager.php(258): XF\Job\AbstractRebuildJob->run(8)
#11 src/XF/Job/Manager.php(200): XF\Job\Manager->runJobInternal(Array, 8)
#12 src/XF/Job/Manager.php(84): XF\Job\Manager->runJobEntry(Array, 8)
#13 job.php(43): XF\Job\Manager->runQueue(false, 8)
#14 {main}

Request state

array(4) {
  ["url"] => string(8) "/job.php"
  ["referrer"] => string(37) "/threads/78941/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(0) {
  }
}
 
More general feedback from just using the audentio site.

The media feed is great. Massive scrollable media cards, clicking to the new XF lighbox allows you to comment on the same page.
Being able to react, comment and bookmark from the scrollable feed is great. Really good stuff.

The live filter is great too. I feel the filter is the key to a lot of this, even with forum side of things.

I can't help but think it may be beneficial to have the filter on the left, so you're forced to throw your eyes across it, and also have it float down the feed with the content so it's always easy to access. Hard to say without some experimentation though.
 
The query takes around 1.5 minutes to complete and it locks several tables in my forum, exhausting the PHP processes and crashing the site. The query seems to be dynamic but I can't tell since I haven't had the time to look at the source code, but can you share the same query for other forums to see if I can compare it with mine?

Yeah, of course.

This is my local installation with a few of our addons working themselves into the query:
Code:
SELECT `xf_thread`.*, `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.*, `xf_forum_Forum_2`.*, `xf_node_Node_3`.*, `xf_permission_cache_content_Permissions_4`.*, `xf_user_User_5`.*, `xf_user_LastPoster_6`.*, `xf_thread_read_Read_7`.*, `xf_thread_user_post_UserPosts_8`.*, `xf_thread_watch_Watch_9`.*, `xf_forum_read_Read_10`.*, `xf_forum_watch_Watch_11`.*, `xf_poll_Poll_12`.*, `xf_post_FirstPost_13`.*, `xf_user_User_14`.*, `xf_user_option_Option_15`.*, `xf_user_profile_Profile_16`.*, `xf_user_privacy_Privacy_17`.*, `xf_permission_combination_PermissionCombination_18`.*, `xf_session_activity_Activity_19`.*, `xf_reaction_content_Reactions_20`.*, `xf_bookmark_item_Bookmarks_21`.*, `xf_content_vote_ContentVotes_22`.*, `xf_thread_reply_ban_ReplyBans_23`.*
FROM `xf_thread` FORCE INDEX (`last_post_date`)
LEFT JOIN `xf_th_ignoremore_thread_ignored` AS `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1` ON (`xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.`ignored_thread_id` = `xf_thread`.`thread_id` AND `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.`user_id` = '1')
INNER JOIN `xf_forum` AS `xf_forum_Forum_2` ON (`xf_forum_Forum_2`.`node_id` = `xf_thread`.`node_id`)
LEFT JOIN `xf_node` AS `xf_node_Node_3` ON (`xf_node_Node_3`.`node_id` = `xf_forum_Forum_2`.`node_id`)
LEFT JOIN `xf_permission_cache_content` AS `xf_permission_cache_content_Permissions_4` ON (`xf_permission_cache_content_Permissions_4`.`content_type` = 'node' AND `xf_permission_cache_content_Permissions_4`.`content_id` = `xf_node_Node_3`.`node_id` AND `xf_permission_cache_content_Permissions_4`.`permission_combination_id` = '42')
LEFT JOIN `xf_user` AS `xf_user_User_5` ON (`xf_user_User_5`.`user_id` = `xf_thread`.`user_id`)
LEFT JOIN `xf_user` AS `xf_user_LastPoster_6` ON (`xf_user_LastPoster_6`.`user_id` = `xf_thread`.`last_post_user_id`)
LEFT JOIN `xf_thread_read` AS `xf_thread_read_Read_7` ON (`xf_thread_read_Read_7`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_read_Read_7`.`user_id` = '1')
LEFT JOIN `xf_thread_user_post` AS `xf_thread_user_post_UserPosts_8` ON (`xf_thread_user_post_UserPosts_8`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_user_post_UserPosts_8`.`user_id` = '1')
LEFT JOIN `xf_thread_watch` AS `xf_thread_watch_Watch_9` ON (`xf_thread_watch_Watch_9`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_watch_Watch_9`.`user_id` = '1')
LEFT JOIN `xf_forum_read` AS `xf_forum_read_Read_10` ON (`xf_forum_read_Read_10`.`node_id` = `xf_forum_Forum_2`.`node_id` AND `xf_forum_read_Read_10`.`user_id` = '1')
LEFT JOIN `xf_forum_watch` AS `xf_forum_watch_Watch_11` ON (`xf_forum_watch_Watch_11`.`node_id` = `xf_forum_Forum_2`.`node_id` AND `xf_forum_watch_Watch_11`.`user_id` = '1')
LEFT JOIN `xf_poll` AS `xf_poll_Poll_12` ON (`xf_poll_Poll_12`.`content_type` = 'thread' AND `xf_poll_Poll_12`.`content_id` = `xf_thread`.`thread_id`)
LEFT JOIN `xf_post` AS `xf_post_FirstPost_13` ON (`xf_post_FirstPost_13`.`post_id` = `xf_thread`.`first_post_id`)
LEFT JOIN `xf_user` AS `xf_user_User_14` ON (`xf_user_User_14`.`user_id` = `xf_post_FirstPost_13`.`user_id`)
LEFT JOIN `xf_user_option` AS `xf_user_option_Option_15` ON (`xf_user_option_Option_15`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_user_profile` AS `xf_user_profile_Profile_16` ON (`xf_user_profile_Profile_16`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_user_privacy` AS `xf_user_privacy_Privacy_17` ON (`xf_user_privacy_Privacy_17`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_permission_combination` AS `xf_permission_combination_PermissionCombination_18` ON (`xf_permission_combination_PermissionCombination_18`.`permission_combination_id` = `xf_user_User_14`.`permission_combination_id`)
LEFT JOIN `xf_session_activity` AS `xf_session_activity_Activity_19` ON (`xf_session_activity_Activity_19`.`user_id` = `xf_user_User_14`.`user_id` AND `xf_session_activity_Activity_19`.`unique_key` = CONCAT(`xf_user_User_14`.`user_id`, ''))
LEFT JOIN `xf_reaction_content` AS `xf_reaction_content_Reactions_20` ON (`xf_reaction_content_Reactions_20`.`content_type` = 'post' AND `xf_reaction_content_Reactions_20`.`content_id` = `xf_post_FirstPost_13`.`post_id` AND `xf_reaction_content_Reactions_20`.`reaction_user_id` = '1')
LEFT JOIN `xf_bookmark_item` AS `xf_bookmark_item_Bookmarks_21` ON (`xf_bookmark_item_Bookmarks_21`.`content_type` = 'post' AND `xf_bookmark_item_Bookmarks_21`.`content_id` = `xf_post_FirstPost_13`.`post_id` AND `xf_bookmark_item_Bookmarks_21`.`user_id` = '1')
LEFT JOIN `xf_content_vote` AS `xf_content_vote_ContentVotes_22` ON (`xf_content_vote_ContentVotes_22`.`content_type` = 'thread' AND `xf_content_vote_ContentVotes_22`.`content_id` = `xf_thread`.`thread_id` AND `xf_content_vote_ContentVotes_22`.`vote_user_id` = '1')
LEFT JOIN `xf_thread_reply_ban` AS `xf_thread_reply_ban_ReplyBans_23` ON (`xf_thread_reply_ban_ReplyBans_23`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_reply_ban_ReplyBans_23`.`user_id` = '1')
WHERE (`xf_forum_Forum_2`.`find_new` = 1) AND (`xf_thread`.`discussion_type` <> 'redirect') AND (`xf_thread`.`discussion_state` <> 'deleted')
ORDER BY `xf_thread`.`last_post_date` DESC

LIMIT 200
Run Time: 0.031605

Here's a medium sized board with around 22 million posts, and a few add-ons intermingling:
Code:
SELECT `xf_thread`.*, `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.*, `xf_forum_Forum_2`.*, `xf_node_Node_3`.*, `xf_permission_cache_content_Permissions_4`.*, `xf_user_User_5`.*, `xf_user_LastPoster_6`.*, `xf_thread_read_Read_7`.*, `xf_thread_user_post_UserPosts_8`.*, `xf_thread_watch_Watch_9`.*, `xf_forum_read_Read_10`.*, `xf_forum_watch_Watch_11`.*, `xf_poll_Poll_12`.*, `xf_post_FirstPost_13`.*, `xf_user_User_14`.*, `xf_user_option_Option_15`.*, `xf_user_profile_Profile_16`.*, `xf_user_privacy_Privacy_17`.*, `xf_permission_combination_PermissionCombination_18`.*, `xf_session_activity_Activity_19`.*, `xf_reaction_content_Reactions_20`.*, `xf_bookmark_item_Bookmarks_21`.*, `xf_sv_content_mentions_Mentions_22`.*, `xf_content_vote_ContentVotes_23`.*, `xf_thread_reply_ban_ReplyBans_24`.*
FROM `xf_thread` FORCE INDEX (`last_post_date`)
LEFT JOIN `xf_th_ignoremore_thread_ignored` AS `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1` ON (`xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.`ignored_thread_id` = `xf_thread`.`thread_id` AND `xf_th_ignoremore_thread_ignored_ThIgnoreMoreIgnore_1`.`user_id` = '977975')
INNER JOIN `xf_forum` AS `xf_forum_Forum_2` ON (`xf_forum_Forum_2`.`node_id` = `xf_thread`.`node_id`)
LEFT JOIN `xf_node` AS `xf_node_Node_3` ON (`xf_node_Node_3`.`node_id` = `xf_forum_Forum_2`.`node_id`)
LEFT JOIN `xf_permission_cache_content` AS `xf_permission_cache_content_Permissions_4` ON (`xf_permission_cache_content_Permissions_4`.`content_type` = 'node' AND `xf_permission_cache_content_Permissions_4`.`content_id` = `xf_node_Node_3`.`node_id` AND `xf_permission_cache_content_Permissions_4`.`permission_combination_id` = '10560')
LEFT JOIN `xf_user` AS `xf_user_User_5` ON (`xf_user_User_5`.`user_id` = `xf_thread`.`user_id`)
LEFT JOIN `xf_user` AS `xf_user_LastPoster_6` ON (`xf_user_LastPoster_6`.`user_id` = `xf_thread`.`last_post_user_id`)
LEFT JOIN `xf_thread_read` AS `xf_thread_read_Read_7` ON (`xf_thread_read_Read_7`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_read_Read_7`.`user_id` = '977975')
LEFT JOIN `xf_thread_user_post` AS `xf_thread_user_post_UserPosts_8` ON (`xf_thread_user_post_UserPosts_8`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_user_post_UserPosts_8`.`user_id` = '977975')
LEFT JOIN `xf_thread_watch` AS `xf_thread_watch_Watch_9` ON (`xf_thread_watch_Watch_9`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_watch_Watch_9`.`user_id` = '977975')
LEFT JOIN `xf_forum_read` AS `xf_forum_read_Read_10` ON (`xf_forum_read_Read_10`.`node_id` = `xf_forum_Forum_2`.`node_id` AND `xf_forum_read_Read_10`.`user_id` = '977975')
LEFT JOIN `xf_forum_watch` AS `xf_forum_watch_Watch_11` ON (`xf_forum_watch_Watch_11`.`node_id` = `xf_forum_Forum_2`.`node_id` AND `xf_forum_watch_Watch_11`.`user_id` = '977975')
LEFT JOIN `xf_poll` AS `xf_poll_Poll_12` ON (`xf_poll_Poll_12`.`content_type` = 'thread' AND `xf_poll_Poll_12`.`content_id` = `xf_thread`.`thread_id`)
LEFT JOIN `xf_post` AS `xf_post_FirstPost_13` ON (`xf_post_FirstPost_13`.`post_id` = `xf_thread`.`first_post_id`)
LEFT JOIN `xf_user` AS `xf_user_User_14` ON (`xf_user_User_14`.`user_id` = `xf_post_FirstPost_13`.`user_id`)
LEFT JOIN `xf_user_option` AS `xf_user_option_Option_15` ON (`xf_user_option_Option_15`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_user_profile` AS `xf_user_profile_Profile_16` ON (`xf_user_profile_Profile_16`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_user_privacy` AS `xf_user_privacy_Privacy_17` ON (`xf_user_privacy_Privacy_17`.`user_id` = `xf_user_User_14`.`user_id`)
LEFT JOIN `xf_permission_combination` AS `xf_permission_combination_PermissionCombination_18` ON (`xf_permission_combination_PermissionCombination_18`.`permission_combination_id` = `xf_user_User_14`.`permission_combination_id`)
LEFT JOIN `xf_session_activity` AS `xf_session_activity_Activity_19` ON (`xf_session_activity_Activity_19`.`user_id` = `xf_user_User_14`.`user_id` AND `xf_session_activity_Activity_19`.`unique_key` = CONCAT(`xf_user_User_14`.`user_id`, ''))
LEFT JOIN `xf_reaction_content` AS `xf_reaction_content_Reactions_20` ON (`xf_reaction_content_Reactions_20`.`content_type` = 'post' AND `xf_reaction_content_Reactions_20`.`content_id` = `xf_post_FirstPost_13`.`post_id` AND `xf_reaction_content_Reactions_20`.`reaction_user_id` = '977975')
LEFT JOIN `xf_bookmark_item` AS `xf_bookmark_item_Bookmarks_21` ON (`xf_bookmark_item_Bookmarks_21`.`content_type` = 'post' AND `xf_bookmark_item_Bookmarks_21`.`content_id` = `xf_post_FirstPost_13`.`post_id` AND `xf_bookmark_item_Bookmarks_21`.`user_id` = '977975')
LEFT JOIN `xf_sv_content_mentions` AS `xf_sv_content_mentions_Mentions_22` ON (`xf_sv_content_mentions_Mentions_22`.`content_type` = 'post' AND `xf_sv_content_mentions_Mentions_22`.`content_id` = `xf_post_FirstPost_13`.`post_id`)
LEFT JOIN `xf_content_vote` AS `xf_content_vote_ContentVotes_23` ON (`xf_content_vote_ContentVotes_23`.`content_type` = 'thread' AND `xf_content_vote_ContentVotes_23`.`content_id` = `xf_thread`.`thread_id` AND `xf_content_vote_ContentVotes_23`.`vote_user_id` = '977975')
LEFT JOIN `xf_thread_reply_ban` AS `xf_thread_reply_ban_ReplyBans_24` ON (`xf_thread_reply_ban_ReplyBans_24`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_reply_ban_ReplyBans_24`.`user_id` = '977975')
WHERE (`xf_forum_Forum_2`.`find_new` = 1) AND (`xf_thread`.`discussion_type` <> 'redirect') AND (`xf_thread`.`discussion_state` <> 'deleted')
ORDER BY `xf_thread`.`last_post_date` DESC

LIMIT 500
Run Time: 0.030549

And last but not least on 78 million posts:
Code:
SELECT `xf_thread`.*, `xf_forum_Forum_1`.*, `xf_node_Node_2`.*, `xf_user_User_4`.*, `xf_user_LastPoster_5`.*, `xf_thread_read_Read_6`.*, `xf_thread_user_post_UserPosts_7`.*, `xf_thread_watch_Watch_8`.*, `xf_forum_read_Read_9`.*, `xf_forum_watch_Watch_10`.*, `xf_poll_Poll_11`.*, `xf_post_FirstPost_12`.*, `xf_user_User_13`.*, `xf_user_option_Option_14`.*, `xf_user_profile_Profile_15`.*, `xf_user_privacy_Privacy_16`.*, `xf_session_activity_Activity_18`.*, `xf_reaction_content_Reactions_19`.*, `xf_bookmark_item_Bookmarks_20`.*, `xf_content_vote_ContentVotes_21`.*, `xf_thread_reply_ban_ReplyBans_22`.*
FROM `xf_thread` FORCE INDEX (`last_post_date`)
INNER JOIN `xf_forum` AS `xf_forum_Forum_1` ON (`xf_forum_Forum_1`.`node_id` = `xf_thread`.`node_id`)
LEFT JOIN `xf_node` AS `xf_node_Node_2` ON (`xf_node_Node_2`.`node_id` = `xf_forum_Forum_1`.`node_id`)
LEFT JOIN `xf_permission_cache_content` AS `xf_permission_cache_content_Permissions_3` ON (`xf_permission_cache_content_Permissions_3`.`content_type` = 'node' AND `xf_permission_cache_content_Permissions_3`.`content_id` = `xf_node_Node_2`.`node_id` AND `xf_permission_cache_content_Permissions_3`.`permission_combination_id` = '533')
LEFT JOIN `xf_user` AS `xf_user_User_4` ON (`xf_user_User_4`.`user_id` = `xf_thread`.`user_id`)
LEFT JOIN `xf_user` AS `xf_user_LastPoster_5` ON (`xf_user_LastPoster_5`.`user_id` = `xf_thread`.`last_post_user_id`)
LEFT JOIN `xf_thread_read` AS `xf_thread_read_Read_6` ON (`xf_thread_read_Read_6`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_read_Read_6`.`user_id` = '11275382')
LEFT JOIN `xf_thread_user_post` AS `xf_thread_user_post_UserPosts_7` ON (`xf_thread_user_post_UserPosts_7`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_user_post_UserPosts_7`.`user_id` = '11275382')
LEFT JOIN `xf_thread_watch` AS `xf_thread_watch_Watch_8` ON (`xf_thread_watch_Watch_8`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_watch_Watch_8`.`user_id` = '11275382')
LEFT JOIN `xf_forum_read` AS `xf_forum_read_Read_9` ON (`xf_forum_read_Read_9`.`node_id` = `xf_forum_Forum_1`.`node_id` AND `xf_forum_read_Read_9`.`user_id` = '11275382')
LEFT JOIN `xf_forum_watch` AS `xf_forum_watch_Watch_10` ON (`xf_forum_watch_Watch_10`.`node_id` = `xf_forum_Forum_1`.`node_id` AND `xf_forum_watch_Watch_10`.`user_id` = '11275382')
LEFT JOIN `xf_poll` AS `xf_poll_Poll_11` ON (`xf_poll_Poll_11`.`content_type` = 'thread' AND `xf_poll_Poll_11`.`content_id` = `xf_thread`.`thread_id`)
LEFT JOIN `xf_post` AS `xf_post_FirstPost_12` ON (`xf_post_FirstPost_12`.`post_id` = `xf_thread`.`first_post_id`)
LEFT JOIN `xf_user` AS `xf_user_User_13` ON (`xf_user_User_13`.`user_id` = `xf_post_FirstPost_12`.`user_id`)
LEFT JOIN `xf_user_option` AS `xf_user_option_Option_14` ON (`xf_user_option_Option_14`.`user_id` = `xf_user_User_13`.`user_id`)
LEFT JOIN `xf_user_profile` AS `xf_user_profile_Profile_15` ON (`xf_user_profile_Profile_15`.`user_id` = `xf_user_User_13`.`user_id`)
LEFT JOIN `xf_user_privacy` AS `xf_user_privacy_Privacy_16` ON (`xf_user_privacy_Privacy_16`.`user_id` = `xf_user_User_13`.`user_id`)
LEFT JOIN `xf_permission_combination` AS `xf_permission_combination_PermissionCombination_17` ON (`xf_permission_combination_PermissionCombination_17`.`permission_combination_id` = `xf_user_User_13`.`permission_combination_id`)
LEFT JOIN `xf_session_activity` AS `xf_session_activity_Activity_18` ON (`xf_session_activity_Activity_18`.`user_id` = `xf_user_User_13`.`user_id` AND `xf_session_activity_Activity_18`.`unique_key` = CONCAT(`xf_user_User_13`.`user_id`, ''))
LEFT JOIN `xf_reaction_content` AS `xf_reaction_content_Reactions_19` ON (`xf_reaction_content_Reactions_19`.`content_type` = 'post' AND `xf_reaction_content_Reactions_19`.`content_id` = `xf_post_FirstPost_12`.`post_id` AND `xf_reaction_content_Reactions_19`.`reaction_user_id` = '11275382')
LEFT JOIN `xf_bookmark_item` AS `xf_bookmark_item_Bookmarks_20` ON (`xf_bookmark_item_Bookmarks_20`.`content_type` = 'post' AND `xf_bookmark_item_Bookmarks_20`.`content_id` = `xf_post_FirstPost_12`.`post_id` AND `xf_bookmark_item_Bookmarks_20`.`user_id` = '11275382')
LEFT JOIN `xf_content_vote` AS `xf_content_vote_ContentVotes_21` ON (`xf_content_vote_ContentVotes_21`.`content_type` = 'thread' AND `xf_content_vote_ContentVotes_21`.`content_id` = `xf_thread`.`thread_id` AND `xf_content_vote_ContentVotes_21`.`vote_user_id` = '11275382')
LEFT JOIN `xf_thread_reply_ban` AS `xf_thread_reply_ban_ReplyBans_22` ON (`xf_thread_reply_ban_ReplyBans_22`.`thread_id` = `xf_thread`.`thread_id` AND `xf_thread_reply_ban_ReplyBans_22`.`user_id` = '11275382')
WHERE (`xf_forum_Forum_1`.`find_new` = 1) AND (`xf_thread`.`discussion_type` <> 'redirect') AND (`xf_thread`.`discussion_state` <> 'deleted')
ORDER BY `xf_thread`.`last_post_date` DESC

LIMIT 1000
Run Time: 0.102834

There's generally two things that can be done here to optimize this. Since the xf_session_activity table is a memory table, it doesn't support row-level locking, so any query on it will require the entire table to be locked, which can cause the query performance to snowball if other factors cause it to be low. Converting the table to InnoDB will resolve that (in exchange for some performance, which will probably never be noticed). The second one is to disable the "posts" feed, which runs the query in question, and observe if other feeds queries start to exhibit the same behavior - maybe it's just limited to this particular one.
 
I can't help but think it may be beneficial to have the filter on the left, so you're forced to throw your eyes across it, and also have it float down the feed with the content so it's always easy to access. Hard to say without some experimentation though.
Switching the side is actually an option that is available in the add-on, and sticky sidebar is supported by all our themes as well, but we generally disable it since it snacks away quite a bit of page load time. So from the technical perspective, we have both matters already resolved!
 
Some innovative and nice features there. I love the create button. Very nice work.
I do wonder how this works for communities with lots of major addons. i.e. how optimal are the design choices when there are 5 more content types, like for example articles, blog, showcase, reviews, calendar, etc. I think that how XF handles a lot of content types is one of the weaknesses of XF in regards to style, navigation, content discovery. @Mike Creuzer what are your thoughts on dealing with this?
 
Phrases missing:

ScreenShot00395.png

I think this Phrases missing issue from @Xon addon.
 
Status
Not open for further replies.
Top Bottom