Hurtigere billedskalering til Dynamicweb eCommerce

Jeg har for flere år tilbage lavet en webapp som kan skalere JPEG billeder og den er blevet implementeret på en håndfuld sites efterhånden, og er blevet opdateret, forbedret og ret solid, hvis jeg selv skal sige det.

Du kan se nogle eksempler på hastigheden af den på:

http://metoo.spiritwholesale.com/Pige-336.aspx?GroupID=MINIGIRLOVERDELE
http://www.hvidtogfrit.dk/SHOPMENU/KØB_HVIDEVARER/Produktliste.aspx?GroupID=GROUP1
http://www.kop-kande.dk/Shoppen.aspx?ID=1949&GroupID=GROUP20047

Lige fra start har jeg haft indbygget i den, at den ikke skalere billedet hver gang billede kaldes, men at den skalere original billedet første gang, og så gemmer det skalerede billede til originalen overskrives. Det er lynhurtigt og vildt meget performance besparende, når der skal vises mange billeder.

Nu er tiden kommet til, at jeg gerne vil høre din mening om flg.:

  1. Skal jeg sende kilden til Dynamicweb og høre om de ikke vil lave deres billedskalering på samme måde?
  2. Skal jeg udgive kilden som Open Source, så kun nørder der kender til mit projekt kan bruge den?

Man kan sige, at ved mulighed 2, kan Dynamicweb jo stadigvæk implementere den alt afhængig af Open Source licensen.

Glæder mig til at høre dit synspunkt og iøvrigt om du kunne bruge billedskalerings app’en.

, , ,

10 Kommentarer

  • Claus Witt siger:

    Gør da begge dele.

    Nu har jeg ikke haft med DW at gøre i flere år. Men det er ikke min erfaring at de implementerer nye features af denne art, i det tempo som kunne ønskes.

    Gør det muligt for “nørderne” at bruge din kode fra day one, og sørg for at licensen gør det muligt for DW at bruge koden.

    Jeg plejer selv at bruge MIT license (http://en.wikipedia.org/wiki/MIT_License) i sådanne tilfælde.

  • Regin Madsen siger:

    Enig med Claus!

    Gør begge dele, lav det open source, og send det til DW, så de kan få en ordentlig performance på billedskaleringen!

    Uanset hvad er jeg ihvertfald interesseret i at se/høre mere om den, da vi kæmper med det her issue hver gang vi laver en ecom :-(

  • Sebastian Dammark siger:

    Afgjort nummer 2. Står faktisk og mangler sådan en fætter lige nu da den der er i DW er ufattelig langsom

  • Hvordan adskiller din version sig fra Dynamicwebs egen?

    Dynamicwebs billedskalering gemmer også det skalerede billede (/files/cache.net/images) og sender korrekte cache headers til browseren.

    Jeg tror at den er blevet optimeret i både Dynamicweb 7.1 og 7.2

    Sammenligning:

    Din version
    Dynamicwebs version

  • Kevin Steffer siger:

    @Claus, @Regin og @Sebastian: tak for feedback – det vejer tungt i vægtskålen.
    @Morten, jeg har ikke kigget på, hvad Dynamicweb gør, jeg har brugt vores før Dynamicweb fik lavet en, og den er meget mere fleksibel, da den kan modtagere en del flere parametere. Måske det netop er det som gør, at den er langsommere, men jeg kan da lige dykke ned i det.
    Jeg tror som sådan, at skaleringens metoden er den samme med mindre Dynamicweb bruger WPF, som skulle være hurtigere og mere sikker end GDI+, men jeg tror der er noget galt i den måde et billed bruges fra cache, fordi der er min bare meget hurtigere end Dynamicwebs på en produktliste med bare 10 varer.

  • Hej Kevin

    Vi vil meget gerne tage et kig på din kode for at se om der er noget vi kan bruge for at forbedre vores. Som Morten skriver er der lavet forbedringer på vores – især med optimering af cache når man har mange billeder og senest med at sende de korrekte headere ud. Men der kan garanteret laves flere.

    Alle er desuden velkommen til at kigge på vores kode – har pakket namespaces “Imagehandling” sammen med GetImage.aspx ned så man kan tage et kig på den:
    http://www.dynamicweb.dk/files/system/getimage.aspx.zip

    Kommentarer og ideer er velkomne.

  • Kevin Steffer siger:

    @Nicolai, først vil jeg nævne, at skaleringen af billeder ser ud til at, være nogenlunde samme hastighed, men at hente et billede fra cachen tager i DWs version næsten lige så lang tid, som at skalere billedet.

    Jeg har kigget på koden til GetImage.aspx og uden at have testet det, så formoder jeg, at årsagen skyldes, at den kører med ASYNC kald. Det er sikkert ret godt, hvis den skal skalere billederne, men når den bare skal hente et billede fra cachen, så tror jeg, at en serie af ASYNC kald, virker meget langsommere, fordi der jo alligevel skal lyttes på, at alle startede ASYNC kald bliver færdige.

    Vores GetImage er ultra simpel:
    – Der køres først et tjek for om der findes en cached billede, hvis der gør, så returneres det.
    – Ellers skaleres original billedet og det gemmes i cachen.

    Jeg gad egentlig meget godt vide, hvorfor i har valgt at køre ASYNC?

  • Sebastian siger:

    Det er ret spændende det her. Eller ihvertfald for os der bruger DW’s getimage. Jeg har et site hvor vi kan teste forskellen hvis det skulle blive aktuel.

  • Kevin Steffer siger:

    Jeg kan med glæde meddele, at vores version møder Open Source land.
    Takket være jeres input!

    Jeg pudser lige koden af og så går den på codeplex under projektet Dynamicweb Project Template for VS.NET.

  • Kevin Steffer siger:

    Jeg har udgivet en “standalone” version, sådan som jeg oftest anvender den – nap en kopi her: http://dwimageserver.codeplex.com/

    Jeg hører gerne til forslag og forbedringsmuligheder.

    Jeg arbejder videre på, at få den lagt ind under mit “Dynamicweb Project Template for VS.NET” projekt.

Skriv et svar

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>