Hızlı yükleme web sayfaları

12 Cevap php

We are planning to develop a new website. Our goal is to load web pages quickly. What are all the techniques we need to follow.

Herkes bana iyi önerileri, forumlar bağlantılar veya makaleler verebilirsiniz.

Bizim platformu PHP, MySQL, Javascript ve AJAX.

12 Cevap

Web sitenizin yükleme sürelerini hızlandırmak için en iyi kılavuzları biri:

http://developer.yahoo.com/performance/rules.html


Güncelle: Google şimdi mükemmel bir rehber vardır yanı

http://code.google.com/speed/page-speed/docs/rules_intro.html

Daha iyi bir birlikte addon for Firefox. Bugüne kadar benim test, Google Page Speed ​​addon YSlow daha uzak ve yukarıda çok daha iyidir. Bu çok daha detaylı analiz ve (oldukça YSlow gibi küçük web siteleri için bir CDN tavsiye daha) akıllı tavsiye verir

Bir yararlı bir araç web sayfası performans sorunları tespit yardımcı Yahoo bir araçtır YSlow hangi. Ayrıca, Yahoo'nun Best Practices for Speeding Up Your Web Site iyi bir liste olduğunu.

Ancak, bu konuda bazı perspektif için Jeff'in blog girişi Yahoo's problems are not your problems bkz.

Önbellekleme önbellekleme.

memcached

APC

, Seç birini kullanabilirsiniz. Veritabanından her şeyi almak zorunda değil derece şeyler hızlandırır.

1) mod_gzip / mod_deflate! Bu benim varsayılan olarak açık değildir şaşırdım böyle kolay bir düzeltmedir.

Eğer sonsuza kadar JS ve CSS dosyaları önbelleğe tarayıcıları söyleyebilir böylece 2) URL ile hileler oynayın. Diğer bir deyişle, URL gibi oluşturmak için:

http://www.yourdomain.com/js/mad_scriptz-v123.js

Sonra mod_rewrite kullanımı ve "-V123" dışında şerit:

<IfModule mod_rewrite.c>
    # http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
    RewriteEngine on

    RewriteRule ^/(.*)\-v[0-9.]+\.(css|js|gif|png|jpg|xap)$	/$1.$2	[L]

</IfModule>

Şimdi apache "/ js / mad_scriptz.js" arıyor gidecek ... Eğer statik içeriğini değiştirmek her zaman, sadece içeriğini yeniden tarayıcıları zorlamak için sürüm numarasını yükseltmek. Ben genellikle her şeyin bağlı alır küresel bir sürüm numarasını içeren bir şablon değişkeni var. En verimli, ama benim amaçlar için çalışıyor. Eğer yapı sistemi ya da dosyanın bir karma sürüm numarasını kravat varsa, bu ekstra tatlı olurdu.

Böylece tüm statik şeyler artık yıl sona mod_expires kalkmak:

<IfModule mod_expires.c>
    ExpiresActive On
    # all in seconds...  
    ExpiresByType image/x-icon A2592000
    ExpiresByType image/gif A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType image/png A2592000
    ExpiresByType application/javascript A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType application/x-shockwave-flash A2592000
    ExpiresByType application/pdf A2592000
    ExpiresByType text/css A2592000
    ExpiresByType application/rdf+xml A1800
</IfModule>

Güncelleme: Bu not edilmiştir değil gzip'd içeriği gibi tüm tarayıcılar veya arama motorları. Ben yukarıda önermek gibi körü körüne açmayın. Bunu kabul ederseniz, antika tarayıcılar (bazıları sıkıştırılmış javascript ile pissy alacak) bile gziplemek emin yem yok olun. mod_gzip ve mod_deflate için dokümantasyon iyi çalışması gerekir örnekler (Ben yaptıkları varsayalım var ikisi, ya da insanlar :-) değişiklikleri ile onlara e-posta olacaktır.

Ben de size mod_gzip'd Apache sunucular ve dünya arasında bir ters proxy var ise, size dikkat etmeniz gerekir ki benim bir deneyim oldu bahsetmeliyiz. Squid 2.6 sık sık ve daha da kötüsü, sıkıştırılmamış sürümlerini önbelleğe ve gzip'd içeriğini işleyebilir tarayıcılar onları doyurmaya ne zaman şeyler gziping değil içine Apache aptal olur. Bilmem 3.0 düzeltmeleri bu ve bunu benim yapılandırmasında yanlış bir şey olup olmadığını bilmiyorum (şüpheliyim) eğer. Sadece :-) dikkat

Söyledi. Açın. Cidden :-)

Gerekli, ancak çok az değil gibi az kod yazın.

Daha az kod, daha az az görüntülemek için, daha az işleme, daha az almak, göndermek, derlemek için.

Kodunuz iyi bir hızda yürütülüyor emin olmak için PHP için bir profiler kullanın. Performansı geliştirilmiş olabilir if (mümkünse) refactor.

Tüm dosyaları inlcuding css ve js dosyaları sıkıştırmak da php dosyaları sıkıştırmak. Mümkün ve belirtilen önceki önbellek tüm döner gibi küçük bir veritabanı aramaları yapmak.

Yahoo: "Tabanda Scripts koy", "En az biçimtabakaları koy".

Bu başka optimizasyonlar daha fazla benim son siteyi hızlandırdı.

Bazı rasgele sayı.

Giderek Render yerine bellekte bina ve sonunda göndermeyi daha impression belirgin hız verir.

Bazı ileri önbellek gibi yapabileceğiniz, gelişmiş önbelleğe alma hileler, (bu Akamai büyük bir ölçekte ne olduğunu) ve ayırma statik ve dinamik içerik bulunmaktadır.

PHP ile özellikle, etrafında çok büyük miktarlarda veri kopyalama konusunda dikkatli olun. PHP 4 için ünlü oldu bu nedeniyle bu "varsayılan kopya", ama PHP 5 el verilerin büyük miktarda hala biraz çok kolay Başka bir deyişle:. Kopyalamak (veya oluşturmak!) Dizeleri, diziler yok ve unecessarily nesneleri; yerde onlarla çalışmak ve yerine referansları geçmektedir.

söylenmiştir ne ek olarak:

  • Lütfen css karartmak ve sıkıştırmak
  • javascript karartmak ve sıkıştırmak
  • az dosya == az http isteklerini == hızlı sitesi == tek bir dosyada tüm javascript koymak, tek bir dosyada tüm css koymak

Here is one tip I always find useful: If you have a lot of tiny images, put them all in one tiled image. In your CSS declarations, control the viewport of the html element by manipulating the x and y coordinates of the background:

.icon {
    background-image:url(static/images/icons.png);
    height:36px;
    width:36px;
}
.food {
    background-position:-52px -8px;
}
.icon_default {
    background-position:-184px -96px;
}

Yönetilebilir bir dizi varsa fayans Python komut dosyası veya elle yapılabilir.

Gmail de bu yok. Bkz: http://mail.google.com/mail/images/2/5/greensky/icons7.png

Yahoo! 'nun kurallarda noktaları birkaç yardımcı olan bir proje (http://developer.yahoo.com/performance/rules.html) olduğunu Minify, hangi istihdam minification, paket paket uygulaması ile kullanılan, aynı alanda hizmet veren koşullu HTTP iyi tasarım uygulamaları önemli ölçüde, (aslında sayfa yükleme süreleri farklıdır), özellikle kullanıcı deneyimi sayfa yükler azaltabilir.