Skip to content

Conversation

@huntertur
Copy link
Contributor

Closes #1468

Notes

  • I left in the Browse Content header to help distinguish the browse page from the index page.
  • I feel like the Visual / Literary / Multimedia Submissions naming scheme is a bit cumbersome here. However, that's what the submission detail and upload pages use, so it seems best to use those names here too.

New design

image

@huntertur huntertur requested a review from charmander November 8, 2024 06:00
@huntertur huntertur force-pushed the 1468-browse-improvements branch from 2cf782a to 26203d5 Compare April 27, 2025 23:08
@huntertur
Copy link
Contributor Author

Remarking as draft, will need to poke this more sometime in the future. Re-testing months later, after I had added hundreds of thousands of submissions to my local database (for performance testing for another issue), the browse page takes 200+ ms to load on my branch, compared to near-instant on main.

1.0 ms	SELECT sessions.sessionid AS sessions_sessionid, sessions.created_at AS sessions_created_at, sessions.last_active AS sessions_last_active, sessions.userid AS sessions_userid, sessions.additional_data AS sessions_additional_data, sessions.ip_address AS sessions_ip_address, sessions.user_agent_id AS sessions_user_agent_id FROM sessions WHERE sessions.sessionid = $1
0.4 ms	get('weasyl.define:_get_all_config|v3|2872')
2.9 ms	SELECT su.submitid, su.title, su.rating, su.unixtime, su.userid, pr.username, su.subtype FROM submission su INNER JOIN profile pr ON su.userid = pr.userid LEFT JOIN folder f USING (folderid) WHERE NOT hidden AND (su.rating <= 40 OR su.userid = 2872) AND su.subtype >= 1000 AND su.subtype < 2000 AND (NOT su.friends_only OR su.userid = 2872 OR EXISTS (SELECT 0 FROM frienduser WHERE ((userid, otherid) = (2872, su.userid) OR (userid, otherid) = (su.userid, 2872)) AND settings !~ 'p')) AND NOT EXISTS (SELECT 0 FROM ignoreuser WHERE (userid, otherid) = (2872, su.userid)) AND (su.userid = 2872 OR NOT EXISTS (SELECT 0 FROM searchmapsubmit WHERE targetid = su.submitid AND tagid IN (SELECT tagid FROM blocktag WHERE userid = 2872 AND rating <= su.rating))) ORDER BY su.submitid DESC LIMIT 22
0.3 ms	get_multi(('libweasyl.media:get_multi_submission_media|1638022', 'libweasyl.media:get_multi_submission_media|1638023', 'libweasyl.media:get_multi_submission_media|1638024', 'libweasyl.media:get_multi_submission_media|1638025', 'libweasyl.media:get_multi_submission_media|1638026', 'libweasyl.media:get_multi_submission_media|1638027', 'libweasyl.media:get_multi_submission_media|1638028', 'libweasyl.media:get_multi_submission_media|1638029', 'libweasyl.media:get_multi_submission_media|1638030', 'libweasyl.media:get_multi_submission_media|1638031', 'libweasyl.media:get_multi_submission_media|1638032', 'libweasyl.media:get_multi_submission_media|1638033', 'libweasyl.media:get_multi_submission_media|1638034', 'libweasyl.media:get_multi_submission_media|1638035', 'libweasyl.media:get_multi_submission_media|1638036', 'libweasyl.media:get_multi_submission_media|1638037', 'libweasyl.media:get_multi_submission_media|1638038', 'libweasyl.media:get_multi_submission_media|1638039', 'libweasyl.media:get_multi_submission_media|1638040', 'libweasyl.media:get_multi_submission_media|1638041', 'libweasyl.media:get_multi_submission_media|1638042', 'libweasyl.media:get_multi_submission_media|1638045'))
162.1 ms	SELECT su.submitid, su.title, su.rating, su.unixtime, su.userid, pr.username, su.subtype FROM submission su INNER JOIN profile pr ON su.userid = pr.userid LEFT JOIN folder f USING (folderid) WHERE NOT hidden AND (su.rating <= 40 OR su.userid = 2872) AND su.subtype >= 2000 AND su.subtype < 3000 AND (NOT su.friends_only OR su.userid = 2872 OR EXISTS (SELECT 0 FROM frienduser WHERE ((userid, otherid) = (2872, su.userid) OR (userid, otherid) = (su.userid, 2872)) AND settings !~ 'p')) AND NOT EXISTS (SELECT 0 FROM ignoreuser WHERE (userid, otherid) = (2872, su.userid)) AND (su.userid = 2872 OR NOT EXISTS (SELECT 0 FROM searchmapsubmit WHERE targetid = su.submitid AND tagid IN (SELECT tagid FROM blocktag WHERE userid = 2872 AND rating <= su.rating))) ORDER BY su.submitid DESC LIMIT 22
0.3 ms	get_multi(('libweasyl.media:get_multi_submission_media|1086314', 'libweasyl.media:get_multi_submission_media|1086946', 'libweasyl.media:get_multi_submission_media|1247345', 'libweasyl.media:get_multi_submission_media|1287111', 'libweasyl.media:get_multi_submission_media|1401843', 'libweasyl.media:get_multi_submission_media|260204', 'libweasyl.media:get_multi_submission_media|264277', 'libweasyl.media:get_multi_submission_media|275254', 'libweasyl.media:get_multi_submission_media|300344', 'libweasyl.media:get_multi_submission_media|520139', 'libweasyl.media:get_multi_submission_media|548340', 'libweasyl.media:get_multi_submission_media|568143', 'libweasyl.media:get_multi_submission_media|711895'))
116.7 ms	SELECT su.submitid, su.title, su.rating, su.unixtime, su.userid, pr.username, su.subtype FROM submission su INNER JOIN profile pr ON su.userid = pr.userid LEFT JOIN folder f USING (folderid) WHERE NOT hidden AND (su.rating <= 40 OR su.userid = 2872) AND su.subtype >= 3000 AND su.subtype < 4000 AND (NOT su.friends_only OR su.userid = 2872 OR EXISTS (SELECT 0 FROM frienduser WHERE ((userid, otherid) = (2872, su.userid) OR (userid, otherid) = (su.userid, 2872)) AND settings !~ 'p')) AND NOT EXISTS (SELECT 0 FROM ignoreuser WHERE (userid, otherid) = (2872, su.userid)) AND (su.userid = 2872 OR NOT EXISTS (SELECT 0 FROM searchmapsubmit WHERE targetid = su.submitid AND tagid IN (SELECT tagid FROM blocktag WHERE userid = 2872 AND rating <= su.rating))) ORDER BY su.submitid DESC LIMIT 22
0.2 ms	get_multi(('libweasyl.media:get_multi_submission_media|1003362', 'libweasyl.media:get_multi_submission_media|1149675', 'libweasyl.media:get_multi_submission_media|1153077', 'libweasyl.media:get_multi_submission_media|1167496', 'libweasyl.media:get_multi_submission_media|1259692', 'libweasyl.media:get_multi_submission_media|1349598', 'libweasyl.media:get_multi_submission_media|1374509', 'libweasyl.media:get_multi_submission_media|161157', 'libweasyl.media:get_multi_submission_media|1638044', 'libweasyl.media:get_multi_submission_media|172028', 'libweasyl.media:get_multi_submission_media|19470', 'libweasyl.media:get_multi_submission_media|201142', 'libweasyl.media:get_multi_submission_media|228136', 'libweasyl.media:get_multi_submission_media|264208', 'libweasyl.media:get_multi_submission_media|631538', 'libweasyl.media:get_multi_submission_media|770374', 'libweasyl.media:get_multi_submission_media|79495', 'libweasyl.media:get_multi_submission_media|85591', 'libweasyl.media:get_multi_submission_media|889680'))
0.9 ms	SELECT ch.charid, ch.char_name, ch.rating, ch.unixtime, ch.userid, pr.username, ch.settings FROM character ch INNER JOIN profile pr ON ch.userid = pr.userid WHERE NOT ch.hidden AND (ch.rating <= 40 OR ch.userid = 2872) AND NOT EXISTS (SELECT 0 FROM ignoreuser WHERE (userid, otherid) = (2872, ch.userid)) AND (ch.userid = 2872 OR NOT EXISTS (SELECT 0 FROM searchmapchar WHERE targetid = ch.charid AND tagid IN (SELECT tagid FROM blocktag WHERE userid = 2872 AND rating <= ch.rating))) AND (NOT ch.friends_only or ch.userid = 2872 OR EXISTS (SELECT 0 from frienduser WHERE ((userid, otherid) = (2872, ch.userid) OR (userid, otherid) = (ch.userid, 2872)) AND settings !~ 'p')) ORDER BY ch.charid DESC LIMIT 22
0.7 ms	SELECT jo.journalid, jo.title, jo.userid, pr.username, jo.rating, jo.unixtime FROM journal jo JOIN profile pr ON jo.userid = pr.userid WHERE NOT jo.hidden AND (jo.userid = 2872 OR jo.rating <= 40) AND (NOT jo.friends_only OR jo.userid = 2872 OR EXISTS (SELECT 0 FROM frienduser WHERE ((userid, otherid) = (2872, jo.userid) OR (userid, otherid) = (jo.userid, 2872)) AND settings !~ 'p')) AND NOT EXISTS (SELECT 0 FROM ignoreuser WHERE (userid, otherid) = (2872, jo.userid)) AND (jo.userid = 2872 OR NOT EXISTS (SELECT 0 FROM searchmapjournal WHERE targetid = jo.journalid AND tagid IN (SELECT tagid FROM blocktag WHERE userid = 2872 AND rating <= jo.rating))) ORDER BY jo.journalid DESC LIMIT 22
0.1 ms	get_multi(('libweasyl.media:get_multi_user_media|15712', 'libweasyl.media:get_multi_user_media|2008', 'libweasyl.media:get_multi_user_media|20418', 'libweasyl.media:get_multi_user_media|2061', 'libweasyl.media:get_multi_user_media|23613', 'libweasyl.media:get_multi_user_media|5'))
0.0 ms	get('weasyl.define:_page_header_info|2872')
0.0 ms	get('weasyl.define:_get_display_name|2872')
0.0 ms	get_multi(('libweasyl.media:get_multi_user_media|2872',))

@huntertur huntertur removed the request for review from charmander April 27, 2025 23:15
@huntertur huntertur marked this pull request as draft April 27, 2025 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: Split Browse page Submissions into Visual / Literary / Multimedia

1 participant