2016-04-24 14 views
1

Ich erstelle ein Mockup-Datei-Upload-Tool für eine Community-Site mit Fine Uploader.Fine Uploader-Sitzung Thumbnails langsam zu laden

Ich habe die Sitzung eingerichtet, um die ursprünglichen Dateien vom Server zusammen mit einer Miniaturansicht URL abrufen.

Alles funktioniert gut, aber das Rendern der Vorschaubilder ist wirklich langsam. Ich kann nicht herausfinden warum. Also habe ich fest programmiert, ein sehr kleines Thumbnail für jede der vier Dateien zu verwenden. Dies machte keinen Unterschied.

Die Serverseite nicht das Problem. Die Information kommt sehr schnell zurück.

Mache ich etwas falsch? Warum ist der Fineuploader so langsam? Hier ist Screenshot. Es dauert vier Sekunden, um die vier Vorschaubilder zu rendern.

fine uploader rendering thumbs

ich letzte Chrom bin mit. Es ist ein NancyFX-Projekt auf einer ziemlich leistungsfähigen Maschine. Andere Seiten mit großen Bildern zu bearbeiten, ist bissig.

Client-Seite Code:

thumbnails: { 
       placeholders: { 
        waitingPath: '/Content/js/fine-uploader/placeholders/waiting-generic.png', 
        notAvailablePath: '/Content/js/fine-uploader/placeholders/not_available-generic.png' 
       } 
      }, 
      session: { 
       endpoint: "/getfiles/FlickaId/342" 
      }, 

Server-Side-Code:

 // Fine uploader makes session request to get existing files 
     Get["/getfiles/FlickaId/{FlickaId}"] = parameters => 
     { 
      //get the image files from the server 
      var i = FilesDatabase.GetFlickaImagesById(parameters.FlickaId); 

      // list to hold the files 
      var list = new List<UploadedFiles>(); 

      // build the response data object list 
      foreach (var imageFile in i) 
      { 
       var f = new UploadedFiles(); 

       f.name = "test-thumb-small.jpg"; // imageFile.ImageFileName; 
       f.size = 1; 
       f.uuid = imageFile.FileGuid; 
       f.thumbnailUrl = "/Content/images/flickabase/thumbnails/" + "test-thumb-small.jpg"; // imageFile.ImageFileName; 

       list.Add(f); 
      } 

      return Response.AsJson(list); // our model is serialised by Nancy as Json! 

     }; 
+0

Gibt es ein Problem mit der Dateigröße? Ich sende noch nicht die tatsächliche Dateigröße zurück. Ich dachte, das war nur zur Anzeige. –

Antwort

2

Das ist von Entwurf und wurde sowohl den UI-Thread von geflutet mit der Bildskalierungslogik zu verhindern, implementiert und Verhindern eines Problems mit dem Speicherverlust, das für Chrome spezifisch ist. Dies wird in den Miniaturen und Voransichten Abschnitt der Dokumentation erklärt, speziell in the "performance considerations" area:

Für Browser, die Client-generierte Bildvorschau (qq.supportedFeatures.imagePreviews === true), eine konfigurierbare Pause zwischen template- unterstützen erzeugte Vorschau ist in Kraft. Dies verhindert, dass der komplexe Prozess der Generierung von Vorschaubildern die CPU der Client-Maschine für eine längere Zeit erdrückt. Ohne diese Beschränkung besteht die Gefahr, dass der Browser-UIhread blockiert wird, und verhindert jegliche Benutzerinteraktion (Scrollen usw.), bis alle Vorschaubilder generiert wurden.

Sie können diese Pause über the thumbnails option einzustellen oder entfernen, aber ich schlage vor, Sie nicht dies tun, wenn Sie sicher, dass Benutzer nicht eine große Anzahl von komplexen Bilddateien löschen.

+0

Danke für die schnelle Antwort Ray. Interessant. Gibt es eine Möglichkeit, diesen Parameter nur für die Ladesitzung "Initial Files" zu ändern? Es scheint nicht richtig zu sein, diese Pause zu haben, wenn im Wesentlichen alles, was passiert, für eine Liste von Bilddateien ist, die URLs vom Server zurückkommen und auf der Webseite angezeigt werden. Wenn ich eine js-Schleife schreiben würde, die eine Reihe von Tags auf der Seite platziert, hätte das Ergebnis keine Verzögerung. Die Pause sollte nur wirklich auftreten, wenn ein Benutzer eine Datei auf das Steuerelement löscht. Oder ist das nicht möglich? –

+0

Die Größe der Bilder wird geändert, um sicherzustellen, dass sie alle einheitlich angezeigt werden. Das ist also viel mehr als nur das Rendern von Bild-Tags. –

+0

ok, danke. In diesem Fall werden nur ich und einige andere Dateien hochladen, also ist es keine große Sache. Ich werde die Zeit ein wenig reduzieren und damit leben. –