{"action":"opened","issue":{"url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/issues/317","labels_url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/issues/317/labels{/name}","comments_url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/issues/317/comments","events_url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/issues/317/events","html_url":"https://github.com/TeamMentor/TM_4_0_Design/issues/317","id":55591266,"number":317,"title":"Cache GraphDB generated json files in order to improve view performance","user":{"login":"DinisCruz","id":656739,"avatar_url":"https://avatars.githubusercontent.com/u/656739?v=3","gravatar_id":"","url":"https://api.github.com/users/DinisCruz","html_url":"https://github.com/DinisCruz","followers_url":"https://api.github.com/users/DinisCruz/followers","following_url":"https://api.github.com/users/DinisCruz/following{/other_user}","gists_url":"https://api.github.com/users/DinisCruz/gists{/gist_id}","starred_url":"https://api.github.com/users/DinisCruz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DinisCruz/subscriptions","organizations_url":"https://api.github.com/users/DinisCruz/orgs","repos_url":"https://api.github.com/users/DinisCruz/repos","events_url":"https://api.github.com/users/DinisCruz/events{/privacy}","received_events_url":"https://api.github.com/users/DinisCruz/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/labels/Effort:%20Pint%20-%202d","name":"Effort: Pint - 2d","color":"fad8c7"},{"url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/labels/P1","name":"P1","color":"fef2c0"},{"url":"https://api.github.com/repos/TeamMentor/TM_4_0_Design/labels/Type:%20Task","name":"Type: Task","color":"bfd4f2"}],"state":"open","locked":false,"assignee":{"login":"DinisCruz","id":656739,"avatar_url":"https://avatars.githubusercontent.com/u/656739?v=3","gravatar_id":"","url":"https://api.github.com/users/DinisCruz","html_url":"https://github.com/DinisCruz","followers_url":"https://api.github.com/users/DinisCruz/followers","following_url":"https://api.github.com/users/DinisCruz/following{/other_user}","gists_url":"https://api.github.com/users/DinisCruz/gists{/gist_id}","starred_url":"https://api.github.com/users/DinisCruz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DinisCruz/subscriptions","organizations_url":"https://api.github.com/users/DinisCruz/orgs","repos_url":"https://api.github.com/users/DinisCruz/repos","events_url":"https://api.github.com/users/DinisCruz/events{/privacy}","received_events_url":"https://api.github.com/users/DinisCruz/received_events","type":"User","site_admin":false},"milestone":null,"comments":0,"created_at":"2015-01-27T08:55:11Z","updated_at":"2015-01-27T08:55:11Z","closed_at":null,"body":"Since the 'GraphDB generated json files' do not change for existing libraries, we can cache (or pre-generate) the json files used by the UI\r\n\r\nFor example the **query_tree** objects (like http://localhost:1332/data/query_tree/query-d994753ff409) which is are a bit expensive to calculate.\r\n\r\nThe latest version contains a first mini-pass at doing some of this caching, with the query results being stored in memory. This means that there is only one calculation of the **query_tree** objects per server.\r\n\r\nBut the best way to do this, will be to actually use temp files to store this info, since that will allow for the pre-calculation of those values.\r\n\r\nThe pre-calculation of json results will also help to deal with the weakest link at the moment of the TM GraphDB which is the levelDB and levelgraph (which still don't handle very well multiple requests)"}}