Normalden çok ve ne kadar daha yavaş resim etiketi src bir php komut dosyası koyarak?

4 Cevap php

Ben HTML bu etiketi koyarsanız:

<img src="http://server/imageHandler.php?image=someImage.jpg" />

yerine

<img src="http://server/images/someImage.jpg" />

and use the imageHandler.php script to read the image file, output expire headers and print the image data, i expect it to be slower. Is this a viable way to manipulate image headers or the performance penalty is too much since images are all around. Are there other ways to set expire headers on images through my php code?

4 Cevap

Evet, herhangi bir PHP komut dosyası çalıştıran statik bir dosya hizmet daha yavaştır.

Bunun yerine, Apache yapılandırma direktiflerini kullanarak başlıklarını sona ayarlayabilirsiniz. mod_expires için belgelerine bakın. . Örneğin, bir Apache httpd.conf veya htaccess dosyasında aşağıdaki yönergeler koyabilirsiniz:

# enable expirations
ExpiresActive On
# expire JPG images after a month in the client's cache
ExpiresByType image/jpg A2592000

Böyle bir şey deneyin

header("Expires: <the date>");
http_send_file("someImage.jpg");

http://us3.php.net/manual/en/function.http-send-file.php http_send_file fonksiyonu (ben öyle düşünüyorum şekilde çalışır eğer) kopyalar ağ arabirimi disk doğrudan dosya, bu yüzden gelen o kadar hızlı sunucusu yerel olduğu gibi ilgili görüntüyü kendisi gönderir. (Tabii ki, PHP yorumlayıcı çalıştırmak için alınan zaman hala statik bir dosya hizmet daha genel istek biraz daha yavaş yapacaktır.)

Gibi en az bir diğer sorunun cevabı Apache çalıştıran eğer, eğer henüz bir .htaccess dosya ya da daha iyi kullanmak için, başlık (veya başka bir başlık) Expires bir ayarlamak için muhtemelen en iyi yolu bahsetti sunucusunun ana yapılandırma dosyalarına erişimi olan, orada yapılandırmayı Expires koydu. mod_expires bakabilirsiniz.

Imagehandler GD kullanarak veya Imagick ise normal bir img etiketinin çok daha yavaş olacaktır.

Ben dosyası varsa, imagehandler sadece yeni bir dosya yaratılmış olmalıdır eğer ham veri değil, o bir kez oluşturulur ve daha sonra önbellek için tekrar kullanılan çıktılar, geçici bir dosyaya görüntü çıkışını önbelleğe alma öneririm.

Sen bitiminden ayarlamak için htaccess kullanabilirsiniz.

.htaccess Caching

İşte imageHandler.php gerçekleştirir ne görev bağlıdır. Kodunuzda milisaniye cinsinden zaman aşımı yazdırarak bunu ölçebilir.