[英]Is putting a php script in the src of the image tag slower than normal and by how much?
如果我将此标记放在HTML中:
<img src="http://server/imageHandler.php?image=someImage.jpg" />
代替
<img src="http://server/images/someImage.jpg" />
并使用imageHandler.php脚本读取图像文件,输出到期标头并打印图像数据,我希望它会变慢。 这是操作图像标题的可行方法,还是因为图像无处不在,所以性能损失太大。 还有其他方法可以通过我的PHP代码在图片上设置过期标头?
是的,运行任何PHP脚本比提供静态文件要慢。
相反,您可以使用Apache配置指令设置expire标头。 请参阅有关mod_expires
的文档。 例如,您可以将以下指令放入Apache httpd.conf或.htaccess文件中:
# enable expirations
ExpiresActive On
# expire JPG images after a month in the client's cache
ExpiresByType image/jpg A2592000
尝试类似
header("Expires: <the date>");
http_send_file("someImage.jpg");
来自http://us3.php.net/manual/en/function.http-send-file.php http_send_file函数(如果按我认为的方式工作)将文件直接从磁盘复制到网络接口,因此它以与服务器本机相同的速度发送图像本身。 (当然,运行PHP解释器所花费的时间仍然会使整体请求比提供静态文件慢一些。)
至少有另一个答案提到,如果您正在运行Apache,设置Expires标头(或任何其他标头)的最佳方法可能是使用.htaccess
文件,或者如果可以访问main则更好。服务器的配置文件,将Expires配置放在此处。 看看mod_expires 。
如果图像处理程序使用GD或Imagick,它将比常规img标签慢得多。
我建议将图像输出缓存到一个临时文件中,如果该文件存在,则图像处理程序仅输出原始数据,但是如果应该创建一个新文件,则将其生成一次,然后再次用于缓存。
您可以使用htaccess设置到期时间。
那将取决于imageHandler.php执行的任务。 您可以通过以毫秒为单位打印代码中的时间来进行测量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.