Reduce the cost of loading large numbers of macros

Summary:
Ref T6013. I accidentally made this cost explosviely huge when fixing macros for logged out users in D10411.

Specifically, we'd load all the macros, which would load all the files, which would load all the macros (to do policy checks), which would fill out of cache I think (but maybe only some of the time?). Anyway, bad news.

Instead, only load the files if we need them.

Test Plan: Viewed macro main page, macro detail, used a macro, used a meme, edited a macro, edited audio.

Reviewers: btrahan, csilvers

Reviewed By: csilvers

Subscribers: epriestley, spicyj

Maniphest Tasks: T6013

Differential Revision: https://secure.phabricator.com/D10428
This commit is contained in:
epriestley
2014-09-05 17:30:26 -07:00
parent ac4247ea59
commit b772a2b92a
6 changed files with 29 additions and 15 deletions

View File

@@ -29,6 +29,7 @@ final class PhabricatorMacroMemeController
$macro = id(new PhabricatorMacroQuery())
->setViewer($user)
->withNames(array($macro_name))
->needFiles(true)
->executeOne();
if (!$macro) {
return false;