Yakut site yükleme süreleri optimize etmek için nasıl?

3 Cevap php

Ben fotoğraf görüntüleme ve için scriptalicious kütüphanede, hem de jquery efektleri kullanma RoR.i planı ile pasta php çerçeve üzerinde yazılı hafif bir fotoğraf vitrin sitesi oluştururken bir acemi değilim etkileri geçiş.

Site çok fotoğraf zengin olacak gibi, ne programlama adımları ben tüm fotoğrafları ve diğer sayfaları hızlı yüklemek sağlamak için alabilir?

3 Cevap

i biraz karıştırma şeyler düşünüyorum. ror php / kek ile karıştırma?

böylece, performansı hakkında. Çoğunlukla onlar ne kadar çok kullanıcı bu kullanıcı kim, size gerekecek düşünmek ve yapmak bağlıdır. Saatte 10 ya da saniye başına 100? onlar uzun bir süre için bir görüntü bakmak yok ya da hızlı bir sayfadan diğerine atlamalı?

Burada çok teknik olmayan bazı ipuçları vardır. Hiçbir sunucu yapılandırma optimize, böylece hiçbir memcached ve. sağduyu ile performansı hakkında düşünmeye başlamak - Holy Grail değil!

  • is your site/application too slow? en sık, bu durum böyle değil. bunu hızlandırmak acıyor asla, ama çoğu zaman, insanlar too much performansı umurumda. her zaman hatırlayın: hızlı olmakla ilgili değil, ilgili varlık fast enough. kimse bazı ekstra milisaniye fark eder. Lütfen sayfa yüklemek için bir saniye gerekiyor, ama sadece 100ms sürerse çoğunlukla alakasız ise% 50 oranında bir hızlanma belirgindir.

  • Siteniz yavaş olup olmadığını öğrenmek, benchmark o kadar. Bunu yapmak için yöntemler bir çok, bir ab (apache kriter) gibi, otomatiktir vardır. sitenize bağlanan kullanıcılar çok sayıda taklit ve size ne yanıt aldı ne kadar güzel bir özetini vermektedir. diğeri: kullanın. değil, yerel ağ içinde! Eğer yavaş olduğunu düşünüyorsanız, o zaman bir şeyler yapmak.

  • Bir fotoğraf vitrin ağır görüntüleri bağlıdır. görüntüler büyük. böylece server bandwidth hızlı teslim için yeterli olduğundan emin olun.

  • Eğer görüntüleri (çok muhtemel bulunuyor) ölçeklendirirseniz, her sayfa isteği, cache ölçekli görüntüyü üzerindeki görüntüyü yeniden boyutlandırmak yok! Çok minik önbelleğe. Her şeyi önbelleğe. işleme ve statik bir dosya teslim sürekli olarak tüm işlem yaparak daha çok daha ucuz.

  • görüntünün kalitesi düşünün. hızlı teslimat, yüksek görüntü kalitesi daha önemlidir? image size ile oynamak - daha iyi sıkıştırma düşük dosya boyutu, daha düşük kaliteli ve daha hızlı teslim anlamındadır.

  • usability düşünüyorum. hiçbir tanesinden sayfa varsa, insanlar görmek istemiyorum fotoğrafları bir çok bakıyor, sırayla, kütüphaneye gezinmek zorunda. zaten resmi görürseniz, onlar (bant genişliği kullanımını ve saniyede istekleri düşürücü) önemli olanlar atlayabilirsiniz. flickr düşünün: - 500 piksel genişliğinde ve insanlar hala mutlu gösterilen görüntülerin boyutu ... onlar pul gibiyiz. onlar daha büyük bir versiyonunu gerekiyorsa, onlar zaten "tüm boyutları" linkine tıklayın.

  • tricks, tricks, tricks: Daha önce, kullanıcıların modları, bazen düşük çözünürlük / yüksek sıkıştırma görüntüler aktarıldı ile sörf, bu yüzden kullanıcı kısa bir süre sonra bir şey vardı. ilk görüntü yüklendi sonra, büyük bir versiyonu startet. Bugün çoğu kullanıcı bu yüzden sadece ek iş yükü ek bir görüntü gönderme, geniş bant var, çünkü artık yaygın değil.

  • the audience düşünüyorum. Onlar 14.4k modemler veya geniş bant ile sitenizi ziyaret mıyız? onlar yükleme siteleri (fotoğrafçılar muhtemelen) yavaşlatmak için kullanılır? bunları öğrenmek için istatistikleri kontrol.

  • Lütfen backend scripting language muhtemelen senin sorunun değil. php gerçekten hızlı, yakut hızlı değil gerçekten değil - c veya java veya ocaml, diyelim ki, göre. çerçeveler el yapımı, optimize edilmiş kod daha yavaştır. yavaş parçalar nerede görmek için kod hata ayıklama. benim tahminim? resim boyutlandırma ve veritabanı erişimi. başka bir dile geçiş veya kodunuzu optimize ederken bu değişmeyecek.

regarding the speed of websites

dahil bir çok faktör vardır. Bunlardan bazıları şunlardır:

  1. serverside işleme: uygulama, hızlı donanım hızlı?

  2. Teslimat: tersi ne kadar hızlı sunucu istemci transfer istekleri ve dosyaları ve? (Bant genişliğine bağlı)

  3. istemci tarafında render: kendi tarayıcı ne kadar hızlı, ne kadar iş yapılması gerekiyor?

  4. kullanıcı haibts: müşteri bile hızını gerekiyor? bazen yavaş sayfaları hiçbir sorun vardır, örneğin, onlar etrafında tıklayarak olmadan orada uzun bir zaman harcamak durumunda. flash oyun siteleri düşünün: Eğer bir flash oyun oynarken bir saat harcamak durumunda, muhtemelen farkına bile olacak olacak 3 veya 5 saniye içinde sayfa yükler eğer.

algılanmış hız - dört bir karışımı - önemli bir ölçümdür.

Eğer gerçekten çok yavaş teyit ettik, doğru parçası optimize emin olun. Sunucu tarafı komut optimize sunucu yeterince hızlı ise işe yaramaz, ancak sayfa tarayıcıda işlemek için yaş alır. bant genişliği tıkalı ise render süresini optimize etmek gerek.

regarding optimization

bir uygulama oluşturulurken performans ayrılmaz bir parçasıdır. Eğer gerçekten hızlı bir şey gerekiyorsa, başından itibaren hız için plan var. hız için tasarlanmış değilse, etkili optimizasyonu genellikle mümkün değildir.

that's not really true for web apps all the time, because they easily scale horizontally, meaning: throw hardware at it.
all things cost money, and if money is important to you (or your boss), don't forget about it. how much do two weeks of optimising an application cost? say, optimising costs you (or your boss) X € (i'm european) in salary. now, think about buying another server: that costs Y € (including setup). if Y < X, just buy the server and you'll be fine.

random buzzwords

son fakat en az değil belki yardımcı olabilecek bir şey var, size bazı rasgele (sırasız) kodlardan atarım. sadece yardımcı olmalıdır, google ...

içerik dağıtım ağları, (istekleri kaydetmek için görüntüleri birleştirerek) (intel) SSD'ler, sprite, sayfa sıkıştırma (gzip, deflate), memcached, APC (PHP bytecode önbellek), minifying ve birden fazla CSS ve JS dosyalarını birleştirme, HTTP bilinçli kullanımı durum kodları (değişmedi), statik ayrılması ve dinamik içerik (farklı sunucular ve etki alanları), AJAX yoluyla adım adım yükleme (ilk önemli içerik) ...

şimdi fikir bitti.

edit/update

şeyler / teknikleri i unuttum:

  • kullanıcılar en azından bir şey oluyor hissediyorum, bir ilerleme çubuğu veya benzer bir şey uygulamak. Eğer sadece javascript ile çalışan eğer ilerleme çubukları kullanmak, ama en azından hareketli kum veya saatin çeşit göstermek olamaz. Eğer flaş kullanırsanız, gerçek bir ilerleme çubuğu gösterebilir.

  • AJAX veya flaş ile çalışarak tam sayfa reloads atlayabilirsiniz - sadece ihtiyacınız verileri yüklemek. Sık sık bu flash resim galerileri uygulanan görmek. Sadece görüntü ve tanımı yüklenemedi.

  • önyükleme: Kullanıcıların uzun bir süre için, bir görüntüye bakarsanız, zaten sonraki görüntüyü yükleme başlayabilirsiniz, böylece kullanıcı devam ederse tarayıcı önbelleğe bulunuyor.

disclaimer

i never implemented performance critical apps (with 2 exceptions), so most of what i've written above is speculation and the experience of others. today you read stories about successfull startups and how they coped (performance-wise) with going from 100 to a bazillion users a day, and how they used nifty tricks to solve all those problems all the time.
but is that going to happen to you? probably not. everyone talks about it, almost nobody really needs it (but i admit, it's still good to know).

benim gerçek dünya deneyimi (evet, ben uzun cevaplar yazma gibi):

once i did parts of a website with several thousand of unique visitors a day, powered by a cms (typo3) and running on a single dedicated samp-server (think of used, decade old solaris servers, not ghz!). you could search for flats, and the form told you how many results you'll have (e.g. 20-40m²: 400 hits, 30-60m²: 600 hits) by reloading an iframe ON-CLICK. it was very, very slow (but users still used it). constantly 100% load. it was my job to solve that problem.
what did i do? first, find out why it was so slow. my first guess was right, the on-click request also used typo3 (w/o caching, of course). by replacing this single action with a custom script that just queried the database directly, bypassing typo3, the problem was solved. load went down to almost nothing. took me about 2 hours.

diğer proje çalıştırmak için milyonlarca satır ve karmaşık sonsuza dek sürdü birleştirmeler (= birkaç saniye) ile bir oracle veritabanı veri serverd görüntüleme, yaklaşık 1500 tekil ziyaretçi bir gün vardı. Oracle optimize çok deneyimi yoktu, ama ben biliyordum: veritabanı yalnızca bir veya iki kez bir hafta güncellendi. benim çözüm: ben sadece dosya sistemine html yazarak içeriğini önbelleğe. (gecenin ortasında) güncelledikten sonra ben önbelleğini temizleyin ve onu yeniden başladı. bu yüzden, yerine pahalı sorgular i sadece ucuz dosya sistemi okur vardı. sorun çözüldü.

Her iki örnek web gelişimini bu performans not roket bilimi bana öğretti. çoğu zaman çözüm basit. ve: developer cost ve security:% 99 zaman yolu daha önemli olan diğer parçalar vardır.

Soru oldukça muğlak. Çoğu zaman bir sayfa genellikle statik içerik alma alıyorsanız geçirdi. Burada dil veya çerçeve bağımsız yükleme sürelerini hızlandırmak için pratik bazı kurallar şunlardır:

  1. Kurulum YSlow plug-in firefox için
  2. CSS Sprites kullanın
  3. Statik içerik için hafif bir http sunucu var, nginx veya lighttpd
  4. Farklı bir etki alanı veya alt etki alanı üzerinde statik içerik sunmak, bu daha fazla eşzamanlı http isteklerini verir
  5. Minify javascript ve css
  6. Mümkün olduğu kadar çok önbellek sayfaları
  7. Düşük http isteklerinin sayısını tutun
  8. Run pngcrush ya da görüntülerde jpegtran

Doğal olarak, bu sadece buzdağının ucu. Bunlar iyi ilk adımlardır.

Kütüphanelerin sayısını azaltın, size jquery + scriptalicious kullanmak istiyorum eminiz. Basit şeyler sopa, karmaşık animasyonlar için görünmüyor.

Hızlı yükleme => Önbellekleme, fotoğrafları ile sayfaları önbellek için iyi adaylardır.

Ne endişeli kullanıcı hız hissi hakkında ise, kullanıcı eylemleri beklentisiyle arka planda görüntüleri önceden ama bu sunucu yükünü artırabileceğini düşünmek isteyebilirsiniz. Eğer sözleşmeli iyi bant genişliği varsa bu sadece yapmak.

Oldukça statik bir başparmak ön sayfa üretebiliriz, değişiklikler günde iki kez, sen, gecikme yükleme çok yaşasın azaltmak görmek için sprite tekniği kullanabilirsiniz söylüyorlar:

http://websitetips.com/articles/css/sprites/