{"action":"created","issue":{"url":"https://api.github.com/repos/neos/neos-development-collection/issues/194","labels_url":"https://api.github.com/repos/neos/neos-development-collection/issues/194/labels{/name}","comments_url":"https://api.github.com/repos/neos/neos-development-collection/issues/194/comments","events_url":"https://api.github.com/repos/neos/neos-development-collection/issues/194/events","html_url":"https://github.com/neos/neos-development-collection/pull/194","id":117524049,"number":194,"title":"FEATURE: Asynchronous thumbnail generation","user":{"login":"aertmann","id":903567,"avatar_url":"https://avatars.githubusercontent.com/u/903567?v=3","gravatar_id":"","url":"https://api.github.com/users/aertmann","html_url":"https://github.com/aertmann","followers_url":"https://api.github.com/users/aertmann/followers","following_url":"https://api.github.com/users/aertmann/following{/other_user}","gists_url":"https://api.github.com/users/aertmann/gists{/gist_id}","starred_url":"https://api.github.com/users/aertmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aertmann/subscriptions","organizations_url":"https://api.github.com/users/aertmann/orgs","repos_url":"https://api.github.com/users/aertmann/repos","events_url":"https://api.github.com/users/aertmann/events{/privacy}","received_events_url":"https://api.github.com/users/aertmann/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/neos/neos-development-collection/labels/P:%20Media","name":"P: Media","color":"0052cc"},{"url":"https://api.github.com/repos/neos/neos-development-collection/labels/P:%20Neos","name":"P: Neos","color":"0052cc"},{"url":"https://api.github.com/repos/neos/neos-development-collection/labels/T:%20PHP","name":"T: PHP","color":"009800"},{"url":"https://api.github.com/repos/neos/neos-development-collection/labels/T:%20UX","name":"T: UX","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-11-18T06:39:07Z","updated_at":"2015-12-15T20:35:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/neos/neos-development-collection/pulls/194","html_url":"https://github.com/neos/neos-development-collection/pull/194","diff_url":"https://github.com/neos/neos-development-collection/pull/194.diff","patch_url":"https://github.com/neos/neos-development-collection/pull/194.patch"},"body":"Use asynchronous generation of thumbnails to avoid long backend request times when many thumbnails need to be generated.\r\n\r\n- Asynchronous thumbnail generation (NEOS-1668)\r\n- Use asynchronous thumbnails (NEOS-1672)\r\n- Media thumbnail presets (NEOS-1669)\r\n- Automatic creation of preset thumbnails (NEOS-1671)\r\n- Command to generate thumbnails from presets (NEOS-1681)\r\n- Clearing by preset in clear thumbnails command (NEOS-1684)\r\n- Command to generate uninitialized thumbnails (NEOS-1670)\r\n\r\nIntroduces a ``async`` argument to the image view helpers, image server and asset service to create thumbnails without generating the image. A thumbnail controller is introduced which the view helpers\r\nlink to when a thumbnail is not generated during rendering. The controller redirects to the thumbnail\r\nwhen generated.\r\n\r\nAsynchronous thumbnails are used in the media browser and asset service by default to improve the\r\nrequests times to the backend. It's possible to disable asynchronous thumbnails with the configuration\r\nsetting ``TYPO3.Media.asyncThumbnails``.\r\n\r\nSince several simultaneous requests for thumbnails can occur, depending on browser\r\nand concurrent users, busy servers can experience problems. Therefore it is recommended to\r\nconfigure the server to run ``media:generatethumbnails`` often or use a job queue by listening to the\r\n``thumbnailCreated`` signal and calling ``refreshThumbnail`` for the thumbnail in the thumbnail service.\r\n\r\nAdditionally a concept for thumbnail presets is introduced to allow thumbnails to be reused to reduce\r\nthe amount of necessary thumbnails. Thumbnails presets are configured in the configuration setting\r\n``TYPO3.Media.thumbnailPresets``.\r\n\r\nWhen new images are uploaded thumbnails for the configured presets are automatically created, unless disabled using the configuration setting ``TYPO3.Media.autoGenerateThumbnailPresets``.\r\nIf asynchronous thumbnails are disabled, the thumbnails will be generated immediately making\r\nuploading slower.\r\n\r\nThe media browser and the asset services use these presets to reduce the amount of different\r\nthumbnails used and to enable the generating of the thumbnails to be done server side instead\r\nwhen the user requests them.\r\n\r\nLast two new commands ``media:createthumbnails`` and ``media:generatethumbnails`` are introduced for creating by presets and generating uninitialized thumbnails. Support for clearing by preset is also\r\nadded to the ``media:clearthumbnails`` command.\r\n\r\nNEOS-1667 #close"},"comment":{"url":"https://api.github.com/repos/neos/neos-development-collection/issues/comments/164889103","html_url":"https://github.com/neos/neos-development-collection/pull/194#issuecomment-164889103","issue_url":"https://api.github.com/repos/neos/neos-development-collection/issues/194","id":164889103,"user":{"login":"aertmann","id":903567,"avatar_url":"https://avatars.githubusercontent.com/u/903567?v=3","gravatar_id":"","url":"https://api.github.com/users/aertmann","html_url":"https://github.com/aertmann","followers_url":"https://api.github.com/users/aertmann/followers","following_url":"https://api.github.com/users/aertmann/following{/other_user}","gists_url":"https://api.github.com/users/aertmann/gists{/gist_id}","starred_url":"https://api.github.com/users/aertmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aertmann/subscriptions","organizations_url":"https://api.github.com/users/aertmann/orgs","repos_url":"https://api.github.com/users/aertmann/repos","events_url":"https://api.github.com/users/aertmann/events{/privacy}","received_events_url":"https://api.github.com/users/aertmann/received_events","type":"User","site_admin":false},"created_at":"2015-12-15T20:35:53Z","updated_at":"2015-12-15T20:35:53Z","body":":+1: became more complicated on top of the thumbnail generators, but happy with the outcome though.\r\n\r\nfound a way to get rid of the svg generator which works with the asynchronous thumbnails as well (was causing some issues with static resource linking from CLI)\r\n\r\nregarding thumbnails not being generated, tested about 50-75 times today without any issues.. had some earlier due to the ``stat`` issue, but that's unrelated..\r\n\r\nalso fixed the counters in the commands..\r\n\r\nand moved the async flag into the thumbnail configuration..\r\n\r\nremoved the transient flag from thumbnails and made the static ones persistable since it helps with the asynchronous generation logic and removes creation of links from CLI\r\n\r\ndocumented the whole thing on top and added documentation references for commands, view helpers and validators as well\r\n\r\n+ plus additional fixes and tweaks"}}