Traag weergeven van afbeeldingen voorpagina

Status
Niet open voor verdere reacties.

LuckyD75

Gebruiker
Lid geworden
21 okt 2011
Berichten
19
We zijn bezig met een leuke website over gezelschapspellen, maar nu hebben we een probleem met de snelheid van het weergeven van de plaatjes op de voorpagina. Dit gebeurd erg traag. Zowel in explorer als in firefox. Dit probleem doet zich voor op diverse pc's en laptops. Ik vind het geen goed visite kaartje aangezien het probleem alleen voordoet op de voorpagina.

Het gaat om de volgende site: www.spelsteen.nl
gebruiken: joomla 2.5.1
Jreviews en ireview template

Weet iemand waar ik de oplossing voor dit probleem moet zoeken en hoe dit dan ook op te lossen?
Ik heb ook al een plugin gedownload die de website sneller moet maken, maar dat maakte niets uit.

Wie kan mij helpen???
 
Waren alle computers/laptops die je getest hebt binnen 1 netwerk?
Als ik de website opent wordt de plaatjes wel gewoon normaal geladen.
 
laad idd traag, lijkt me een fout in de opbouw van de site
 
Bedankt voor de reacties. Het waren pc's laptops op verschillende netwerken.
Djangoleone: enig idee hoe ik de opbouw dan kan verbeteren om de afbeeldingen sneller te laden?

Hoor graag van je
 
Hoi LuckyD75,
Ik weet niet of het wel de afbeeldingen zijn die de pagina traag maken: het traag verschijnen van de afbeeldingen kan ook het gevolg zijn van andere traagheden. Bv. er moeten eerst 12 (!) verschillende css-bestanden en 7 javascripten gedownload worden voordat de pagina aan het renderen van z'n opmaak toekomt.


  • Browsers kunnen ik geloof 4 of 6 gelijktijdige verbindingen hebben, dat betekent dat er een serie css'en in de wacht moeten totdat de vorige helemaal binnen zijn. Zijn die 12 css-bestanden en de scripts allemaal meteen nodig voor deze startpagina, of zitten er dingen bij die pas op vervolgpagina's nodig zijn? Dan hier wippen!
  • En het ophalen van de javascripts in de <head>, resp. het instellen van allerlei javascript-settings in de <head>: kan dat niet (gedeeltelijk) uitgesteld worden tot wanneer de pagina al op scherm staat?
    Het downloaden van javascripts blokkeert nl. het simultaan downloaden van dingen die erna komen. - Probeer eens de javascripts stuk voor stuk op het eind te zetten, vlak voor de </body></html> tags.
  • Wat verder een rol kan spelen, zijn de Facebook- en Twitter-invoegsels. Die worden van Facebook en Twitter afgetapt, en als daar drukte of iets anders is, zit de pagina met de gebakken peren. Misschien een gewone home-pagina maken met "Welkom, wij zijn ... en doen ... en op de site is te vinden ...", *) en van het Laatste Nieuws een aparte pagina maken? Dan wordt de lading een beetje verdeeld, en hoeft de homepage niet op Twitter en Facebook te wachten. - Ik zou die in elk geval ook eens tijdelijk wippen, en kijken of dat in paginasnelheid scheelt.

Verdere tips (best veel leesvoer!):



Succes!
Met vriendelijke groet,
CSShunter
__________
*) Bezoekers worden nu meteen in het diepe van het Laatste Nieuws geworpen. Nieuwe bezoekers weten dan niet wat voor site het eigenlijk is, en moeten gaan bladeren om er achter te komen. - Op de homepage kunnen bv. samenvattende stukjes uit "Over Ons" e.a. pagina's komen, vergezeld van links "Meer hierover vindt u op de pagina ...". Dat zal ook de vindbaarheid en de ranking in Google ten goede kunnen komen: belangrijke trefwoorden staan dan alvast op de homepage bij elkaar.
 
Beste CSS hunter

Super bedankt voor het uitgebreide bericht en meedenken over de pagina. Ik ga zeker met je tips aan de slag!
Het kan wel ff een tijdje duren, omdat ik niet zo uitgebreid bekend ben met de codes achter joomla, maar dat is dan gelijk een goede leerschool voor mij!
Ik ga me erin verdiepen!
Je hoort nog wel of het gelukt is!
 
Hoi LuckyD75,

"Ha-ha," lachte de graaf in 't Spaans, "ik heb 'm!" :D



Dus: stop de/het persen maar met het nalopen en bestuderen van alle optimalisatie-tips. *)

Wat blijkt?
Er zit een javascript-functie "lazyload" in. :shocked:
Die naam intrigeerde me, en met dank aan Google: het is een plug-in (in combinatie met jQuery) die het tonen van images tegenhoudt, als die zich "onder de waterlijn" van het beeldscherm bevinden. Ze worden pas getoond als je naar beneden scrollt. Tenminste, dat is de bedoeling; maar het werkt op deze pagina niet goed.
In de testpagina heb ik de lazyload uitgeschakeld, want die veroorzaakt inderdaad de lazyload. :)


Wat te doen?
  1. Je gaat naar de broncode van de pagina.
  2. Je scrollt helemaal naar beneden, vlak voor het eind.
  3. Daar staat:
    HTML:
    ...
    			<script type="text/javascript">
    			jQuery(document).ready(function(){jQuery("img").lazyload({ 
    		    effect : "fadeIn" 
    		    });
    		});
    		</script>
    
    		</body>
    </html>
  4. Dit script schakel je uit door er de commentaar-code <!-- (vóór het begin) en --> (na het eind) in te zetten:
    HTML:
    <!-- uitgeschakeld:
    			<script type="text/javascript">
    			jQuery(document).ready(function(){jQuery("img").lazyload({ 
    		    effect : "fadeIn" 
    		    });
    		});
    		</script>
    -->
    		</body>
    </html>
  5. Klaar.

Toelichting
De functie is bedoeld om alléén images met een class="lazy" te vertragen. Die images moeten dan in de html-code een placeholder (een mini img-bestandje) krijgen, en verder de vindplaats van het echte img.
Maar op deze pagina ontbreekt die class, zowel in de html-code bij de images als in de aanroep van de functie. Daarmee wordt zonder op- of omzien opgegeven dat alle images vertraagd moeten worden. Dat gebeurt dan ook volgens opdracht!
Nu zitten er onder de waterlijn op deze pagina maar een paar afbeeldingen, en daarvoor loont het de moeite niet om de functie te gebruiken. Hij kan gewoon gemist worden.
Bij mij werkt het cross-browser; alleen Facebook en Twitter zijn soms wat traag, maar daar valt weinig aan te doen.

Met vriendelijke groet,
CSShunter
__________
*)
Het kan natuurlijk nooit kwaad. ;)
Bonus: hier is alvast het winkel-plaatje, teruggebracht van 98kB naar 29kB (op formaat van precies de kolom-breedte): spelsteen-winkel-nw.jpg
 
Wouw dat voorbeeld laad inderdaad een stuk sneller!En bedankt voor het winkelplaatje...ga hem invoeren! Ik heb aleen een vraag, ... hoe vind ik de broncode van die pagina? Het is allemaal nog vrij nieuw voor mij en leer joomla door het gewoon te proberen.Heb weinig nog met broncodes gedaan
Begrijp ik het verder goed dat dan de commentaar-code na </script> van de lazyload code moet? Of begrijp ik het dan verkeerd?

Nogmaals super dat je meedenkt!
 
Tja, dat is waar: het is een Joomla-site, Joomla is een CMS, en ik weet eigenlijk niet of je (makkelijk) bij de broncode van een afzonderlijke pagina kunt komen ...

Maar als het goed is, zou er op een beheer-pagina van Joomla een optie moeten zitten om plug-in's aan of uit te zetten, dan ben je van het broncode-gedoe af.
Of dat voor afzonderlijke pagina's ook kan, weet ik niet. Zou wel handig zijn!
  • Als dat niet kan, zou je kunnen proberen om de hele lazyload-plugin voor alles uit te schakelen, en te kijken of er dan heel erg slechte prestaties van andere pagina's gaan komen. - Ik vermoed dat het wel mee zal vallen.

Kom je er niet uit, dan kan hier misschien een Joomla-deskundige raad geven.

Met vriendelijke groet,
CSShunter
_____________
PS:
Als je bij de broncode van de homepage kunt komen, en het script daarin staat (het zou er ook op een andere manier door Joomla in gezet kunnen worden!), kan je ook het hele script wegknippen. Dat is wel zo eenvoudig (en het hoeft op deze pagina toch niet meer aangezet te kunnen worden).
Dan wis je alles wat in regel 2 t/m 7 van punt 3 van m'n reactie nr. #7 hierboven staat.
 
Laatst bewerkt:
Css Hunter,
bedankt weer voor je reactie. Ik kon in het beheer van Joomla geen plug-in vinden met de naam Lazy Load. Dus kan het niet uitschakelen. Heb inmiddels ook een bericht achter gelaten op een Joomla forum. Misschien weten hun hoe ze het moeten doen? Laten we het hopen.
Zodra ik wat weet koppel ik het ook wel terug
 
Ik heb alles al nagelopen van de plugins op de site, maar nergens kan ik de plugin vinden van lazyload.
Wel heb ik nog gekeken via ftp en vond daar een script file lazy load... deze verwijderd, maar dat hiepl ook niets....:confused:

maar hoe heb jij dat dan voor elkaar gekregen met dat voorbeeld in #7? want daar werkt het wel!
 
De analyse gaat verder ...

Hoi LuckyD75,
Wat ik gedaan heb:
  1. broncode van de pagina gekopieerd en in html-bestandje gezet,
  2. met kladblok geopend, en met commentaarregels het script uitgeschakeld,
  3. verse versie geüpload met ftp: zonder tussenkomst van een CMS naar een site zonder CMS.
Wat er verder ook in de pagina zit (via de van jouw site afgetapte andere onderdelen/scripts enz.), op deze manier is de aanroep van de functie lazyload weggehaald, en kan deze het nooit doen > dus altijd prijs.
  • Als je mijn pagina als stand-alone pagina in Joomla kan monteren (dus helemaal buiten het normale CMS om), zou het ook moeten werken.


Het weghalen van het layzyload-script helpt niet
Dat kan kloppen (als het bv. de naam jquery.lazyload.js heeft). Dat is het originele lazyload-script, maar dat wordt hier niet gebruikt!
Want in geen enkele verwijzing op de pagina (ook niet via een ander script) wordt een los lazyload-script opgehaald.

Het lazyload-script wordt er dus op een andere manier aangehaakt.
Hoe dan?
Met de Webdeveloper Toolbar kan je alle scripts opvragen die op een pagina staan, en ze allemaal tegelijk bekijken, resp. erin zoeken.
Dat heb ik even gedaan. Resultaat:
Het woord "lazyload" komt welgeteld 3 keer in alle scripts voor.

De laatste moet het dus zijn.
In dit script van 1378 vette regels en 380kB (!) staat de functie lazyload op regel 1364; en als ik me niet vergis t/m regel 1372.
Dit loeigrote script is een php-script (dat server-side wordt uitgevoerd), en ziet er uit als een "inpak-script", waarin allerlei javascripts, plugins, enz. zijn geïntegreerd. - Het oorspronkelijke lazyload-script zal gebruikt zijn op dit super-script aan te maken, en wordt vervolgens zelf niet meer gebruikt.*)

Tijd voor een experiment! :)
  • Deze regels weggehaald, en het script omgedoopt tot hokuspokus.js.
  • In een nieuwe testpagina naar deze hokuspokus.js gelinkt ipv naar het bestand-met-de-lange-naam.
  • In deze nieuwe testpagina niet de aanroep van de lazy-functie weggecommentarieerd: die wordt dus gewoon opgeroepen (maar bestaat nu niet).
  • De nieuwe testpagina is deze: spelsteen-nw2.htm

Resultaat:
  • Hokuspokus! Hij doet 't, images komen meteen.
  • De pagina heeft nu wel een javascript-error ("Fout: jQuery("img").lazyload is not a function"), dat klopt want die functie hebben we verdonkeremaand; maar de browsers trekken zich voor zover ik kan zien niets van deze fout aan, en doen het voor de rest gewoon goed.
  • Als het niet op de reglementaire manier kan (via uitschakelen plugin, of uitschakelen in de pagina-broncode), dan maar zo!

Wat te doen?
  1. Een goede backup maken van het bestand met de lange naam (zit in de map: [url]www.spelsteen.nl/plugins/system/jch_optimize/cache/[/URL]).
  2. Het hokuspokus-bestand downloaden, de lange naam geven, en met ftp uploaden naar bovenstaande map.
  3. Kijken of alles nog werkt (ook op de andere pagina's), en anders gauw de backup terugzetten. ;)

Ik ben benieuwd!
Met vriendelijke groet,
CSShunter

<edit>

*) Klopt, zie de plugin "JCH Optimize": extensions.joomla.org/extensions/site-management/site-performance/12088, die dit ding heeft gebrouwen.

</edit>
 
Laatst bewerkt:
wederom enorm bedankt voor het meedenken.
Ik heb het uiteindelijk iets simpeler kunnen oplossen. Toen ik in jouw bericht las dat het ging om de plugin jch_optimize heb ik die gewoon uitgeschakeld in joomla. En Voila! het werkt. Ik wist niet dat het daar vandaan kwam! Maar dankzij jouw hulp zijn we eruit gekomen!!!!
IK zal nog wel met je tips aan de slag gaan (#5), als je nog meer tips hebt om onze site te optimaliseren, horen we het heel graag!

Bedankt!
 
Geweldig! Eind goed, al goed! Gefeliciteerd! :thumb:

Nog een klein maar'tje:
Maar ... op de pagina "Over Ons" is nu jullie foto verdwenen. :rolleyes:
Dat komt omdat nu de verwijzing net niet goed is.
Die moet niet zijn src="images/dag 10 32.jpg", maar src="../images/dag 10 32.jpg".
De afbeeldingen op de andere pagina's gaan goed! :)

Dit brengt me nog op twee andere puntjes:
  1. Geef mappen en bestanden geen naam waarin een spatie staat (en gebruik ook geen speciale tekens als accentletters e.d.). In de regels voor verwijzing naar een map/bestand mag dat nl. niet. Browsers corrigeren het meestal wel, maar je kunt beter een middenstreepje - of een onderstreepje _ gebruiken om woorden van elkaar te onderscheiden.
  2. Maak de images in een tekenprogramma (of met de gratis IrfanView) precies zo groot als ze op scherm moeten komen (de opgegeven waarden voor breedte en hoogte). Browsers kunnen niet zo mooi verkleinen of vergroten, en het scheelt vaak in bestandsgrootte = pagina-snelheid.

Zo ook hier! :D
De foto [url]www.spelsteen.nl/images/dag%2010%2032.jpg[/URL] komt hier regelrecht uit de camera: 3.456px bij 2.304px, en is maar liefst 2,8MB groot.
Op de pagina is nodig: 335px * 225px.
Dwz. er worden maar (335 x 225 =) 75.375 van de (3456 x 2304 =) 7.962.624 pixels gebruikt, oftewel er worden 7.887.249 pixels helemaal voor nop gedownload!

Fluks verkleind tot deze: spelsteen-wij.jpg
Nu istie ... 18kB.
  • Dat is de moeite: slechts (18 / 7.962 =) 0,23% van het origineel! *)
  • Geen wonder dat een tijdmeting laat zien dat deze in 62 milliseconden gedownload is (het origineel: rond 2,5 sec.).

Met vriendelijke groet,
CSShunter
___________
*) Verkleining/vergroting werkt kwadratisch: een 2x zo kleine foto heeft een 4x zo klein oppervlak (resp. aantal pixels nodig).

spelsteen-verklein-opp.png
 
Laatst bewerkt:
ik ben aan de slag gegaan met de foto, en hij is veranderd in de nieuwe kleinere foto. Wat betreft de andere foto's ga ik zeker mee aan de slag.
Alleen nu duikt het volgende probleem op. De foto wordt nog niet weergegeven en de plaatjes in de tabellen van de spellen worden nu ook niet weergegeven. Nu ligt dit waarschijnlijk aan de verwijzing, maar ik heb toch verder niets veanderd aan de site? Ik weet dat je geen joomla expert bent, maar ik denk dat het te maken heeft met een component in joomla. Want ik heb jouw foto op de joomla manier ingevoerd in een artikel en ook dat gaat niet goed:confused:
 
Ik heb nu een / voor het imagebestand gezet en dan wordt hij wel weergegeven?! Maar ik kan nu toch niet in elk artikel wat we geschreven hebben de plaatjes ggan voorzien van een / ?
Ik denk dat het te maken heeft met de editor die we gebruiken, omdat deze de verwijzing niet goed zet, maar dat is nooit een probleem geweest, dus ik snap het niet. Gaan maar eens aan de slag met de editor
 
Mm, da's raar.
Als een img niet zonder / getoond wordt, betekent dat dat het img relatief gezocht wordt t.o.v. de pagina waar het in staat, dwz. in een map images/ die onder de directory van de pagina zit. Die map is er dan niet, want alle images zitten in een map images meteen onder de hoofd-directory (spelsteen.nl/images/). Met de / erbij wordt begonnen in die hoofd-directory.

Maar met een CMS kan je hier niet altijd van op aan. Die gebruiken soms een virtuele map (= in de adresbalk zie je een URL van een map, maar in het echt zit die map ergens anders in het systeem op de server).


  • Zit er misschien in de editor (of op een of andere beheer-pagina) een optie om interne links (naar images) relatief of absoluut op te geven? Zo ja, dan kan je proberen die eens andersom te zetten, en te kijken wat er gebeurt. *)
  • Of kan er misschien zoiets staan in de instelling voor de plaats waar de image-map komt?
Iets anders kan ik niet verzinnen.
_______
*) Bij een absolute verwijzing wordt het volledige pad naar de map van iets opgegeven, te beginnen met "http://spelsteen.nl/.../.../bestand.extensie". Dat gaat altijd goed, behalve wanneer je eens mocht besluiten om een hele map te verplaatsen.

__________
O ja, als je op de startpagina voor de maten van het nieuwe winkel-img opgeeft: width="320" en height="214", dan vult het precies de kolom op, en is ook weer in verhouding.
 
Laatst bewerkt:
Ik heb gedaan wat je zei. In de TinyMCE editor stond een verwijzing naar de urls (relatief of absoluut) beide gedaan en beide leverde niets op:(
Verder kon ik nergens een verwijzing naar de map met afbeeldingen vinden?

En het gekke van dit alles vind ik nog dat de plaatjes op de voorpagina wel in beeld komen, terwijl die met dezelfde editor gemaakt zijn en de plaatjes in dezelfde map staan??

Ik heb nog geprobeerd TinyMCE up te daten, maar dat werkte ook niet..... beetje frustrerend allemaal..

verder heb ik het plaatje van de winkel aangepast naar jouw maten en je hebt gelijk het staat inderdaad beter....!
Dank je voor de tip!
 
In de TinyMCE editor stond een verwijzing naar de urls (relatief of absoluut) beide gedaan en beide leverde niets op. :(
Heb je bij het online bekijken wel tevoren de browser-cache (Tijdelijke Internet Bestanden) geleegd, voor je een nieuwe versie ging bekijken?
  • Het zou anders kunnen dat een browser de oude versie pakt, en er geen verschil te zien is.

=====
het gekke van dit alles vind ik nog dat de plaatjes op de voorpagina wel in beeld komen, terwijl die met dezelfde editor gemaakt zijn en de plaatjes in dezelfde map staan.
Dat hoeft niet zo vreemd te zijn. De voorpagina zit als spelsteen.nl/index.php zelf direct onder de root (spelsteen.nl), de images-map zit daaronder, en dan gaat het bij de voorpagina altijd goed, ook zonder de slash.
De andere pagina's zitten in een map onder de index-pagina, dus onder de root (bv. spelsteen.nl/index.php/over-ons), en moeten dan eerst een stapje omhoog naar de map spelsteen.nl/, om dan weer af te dalen naar spelsteen.nl/images/. Dan is daar wel de slash voor nodig.

Maar hoe het kan dat je geen absolute verwijzingen naar images kunt maken, snap ik niet. Ik denk toch dat 't 'm in die cache zat.
En wat staat er in de online broncode, als je de TinyMCE op absoluut zet?

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan