Thanks for the feedback Jason! I added a filter option. Much like the Event Handler it's not enabled by default and needs to be specifically enabled.
I also added a check to see if optimization has been disabled on a particular node so you can skip optimizing particular resources. On Thu, May 31, 2018 at 12:13 PM, Daniel Klco <[email protected]> wrote: > Yeah I had a similar thought so I added a revert option. The original > binary content is saved in a separate attribute optim:original and I added > in a Sling Post Operation to restore this content. > > A selector option certainly makes sense. I'll refactor this a bit to > support the optimize-only option better. > > Regards, > Dan > > On Thu, May 31, 2018 at 11:16 AM, Jason E Bailey <[email protected]> wrote: > >> So the point of conversation that I see is that this is a modification >> that occurs on POST. >> I'm a little bit uncomfortable with pushing content and having that >> content modified without anyway for me to revert it. >> >> I would think that a selector would have been more appropriate. >> >> Or, and I'm stretching here, I wish we could stop saving images with >> extensions in the file name and handle them as data assets and have an >> image handler that would deal with the appropriate extension. Like 'jpg" as >> an example. >> >> On the whole I think this is a good idea. >> >> - Jason >> >> On Thu, May 31, 2018, at 9:12 AM, Daniel Klco wrote: >> > Hello Sling Devs, >> > >> > I pushed in a library prototype for automatically optimizing files (for >> the >> > moment mostly images) in the Sling whiteboard repository[1]. The need >> > solving here is if you are creating a website with a Sling-based >> > application you want to save bandwidth by optimizing all of the images >> on >> > the site, but optimizing images requires another 3rd party tool such as >> > ImageOptim, PngCrush, ImageMagic, etc. Instead, it'd be great if you >> could >> > just optimize the images (and other files as well) right in the CMS. >> > >> > With the FileOptimizer, you could create something like what I created >> for >> > Sling CMS: >> > >> > Before Optimization Screenshot - https://imgur.com/PjLVmzv >> > After Optimization Screenshot - https://imgur.com/Ut43PxZ >> > >> > The FileOptimizer Library uses the whiteboard pattern to allow >> developers >> > to register FileOptimizer instances. Each FileOptimizer will optimizes >> one >> > or more file types by getting a stream of data and optimizing that data. >> > The library handles: >> > >> > - Ensuring the file has not already been optimized >> > - Finding the right FileOptimizer for the file type >> > - Making sure that the optimization actually resulted in a smaller >> file >> > - Storing the results of the optimization >> > >> > The library also includes: >> > >> > - A Sling Model for previewing an optimization >> > - A Sling Model for seeing the data from an optimized file >> > - Two Sling Post Servlet Operations, one to optimize the file, one to >> > revert to the original >> > - Servlets for getting a preview / data for an optimization >> > - An OSGi Event handler (disabled by default) to automatically >> optimize >> > files >> > - A FileOptimizer for PNG files using >> > https://github.com/depsypher/pngtastic >> > - A FileOptimizer for JPEG files using a configurable compression >> level >> > >> > I'm very interested in your opinions about this module and if there are >> any >> > suggestions / recommendations. >> > >> > A few specific points: >> > >> > - Right now the library uses a separate namespace (optim) for all of >> > it's properties and mixins, does that seem acceptable or should >> these be >> > moved into the sling namespace? >> > - The servlets are registered under /system/fileoptim, is there a >> better >> > path? >> > - Any suggestions / improvements for performance / features >> > >> > Regards, >> > Dan >> > >> > [1] - https://github.com/apache/sling-whiteboard/tree/master/file-optim >> > >
