{"action":"opened","issue":{"url":"https://api.github.com/repos/pencilblue/pencilblue/issues/417","labels_url":"https://api.github.com/repos/pencilblue/pencilblue/issues/417/labels{/name}","comments_url":"https://api.github.com/repos/pencilblue/pencilblue/issues/417/comments","events_url":"https://api.github.com/repos/pencilblue/pencilblue/issues/417/events","html_url":"https://github.com/pencilblue/pencilblue/issues/417","id":53414882,"number":417,"title":"Custom Objects admin page: Lots of net requests run sequentially, causing long page load times","user":{"login":"iv597","id":799439,"avatar_url":"https://avatars.githubusercontent.com/u/799439?v=3","gravatar_id":"","url":"https://api.github.com/users/iv597","html_url":"https://github.com/iv597","followers_url":"https://api.github.com/users/iv597/followers","following_url":"https://api.github.com/users/iv597/following{/other_user}","gists_url":"https://api.github.com/users/iv597/gists{/gist_id}","starred_url":"https://api.github.com/users/iv597/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iv597/subscriptions","organizations_url":"https://api.github.com/users/iv597/orgs","repos_url":"https://api.github.com/users/iv597/repos","events_url":"https://api.github.com/users/iv597/events{/privacy}","received_events_url":"https://api.github.com/users/iv597/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-01-05T16:36:38Z","updated_at":"2015-01-05T16:36:38Z","closed_at":null,"body":"For example, this is the request log from Chrome's inspector when loading the object editor page:\r\n\r\n```\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281529\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281530\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281531\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281532\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281533\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281534\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281535\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281536\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281537\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281538\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281539\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281540\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281541\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281542\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281543\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281544\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281545\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281546\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281547\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281548\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281549\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281550\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281551\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281552\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281553\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281554\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281555\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281556\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281557\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281558\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281559\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281560\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281561\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281562\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281563\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281564\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281565\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281566\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281567\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281568\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281569\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281570\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281571\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281572\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281573\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281574\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281575\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281576\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281577\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281578\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281579\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281580\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281581\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281582\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281583\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281584\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281585\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281586\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281587\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281588\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281589\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281590\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281591\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281592\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281593\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281594\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281595\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281596\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281597\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281598\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281599\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281600\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281601\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281602\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281603\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281604\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281605\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281606\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281607\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281608\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281609\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281610\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281611\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281612\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281613\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281614\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281615\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281616\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281617\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281618\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281619\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281620\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281621\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281622\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281623\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281624\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281625\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281626\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281627\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281628\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281629\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281630\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281631\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281632\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281633\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281634\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281635\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281636\".\r\nGET \"http://MY.SITE/js/lib/he/he.js?_=1420475281637\".\r\nGET \"http://MY.SITE/js/lib/to_markdown/to-markdown.js?_=1420475281638\".\r\nGET \"http://MY.SITE/js/lib/markdown/lib/markdown.js?_=1420475281639\".\r\nGET \"http://MY.SITE/js/admin/elements/wysiwyg.js?_=1420475281640\".\r\n```\r\n\r\nI haven't investigated this within the PencilBlue source but judging by the list here and the complexity of the objects being edited on the page in question, I'd guess that the four libraries that commonly come up (he.js, to-markdown.js, markdown.js, wysiwyg.js) are being loaded once per field requiring them within the custom object, which seems far from efficient (especially given it takes 2-5 seconds best-case to load this page).\r\n\r\nAgain, though, that last paragraph is just my guesstimate based on the behavior of the page I've seen, without actually reading the PB source."}}