2

如果我把这个标签放在我的 HTML 中:

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

代替

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

并使用 imageHandler.php 脚本读取图像文件,输出过期标题并打印图像数据,我希望它会更慢。这是一种操纵图像标题的可行方法,还是因为图像无处不在,所以性能损失太大。还有其他方法可以通过我的 php 代码在图像上设置过期标头吗?

4

4 回答 4

3

是的,运行任何 PHP 脚本都比提供静态文件慢。

相反,您可以使用 Apache 配置指令设置过期标头。请参阅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
于 2009-02-09T01:32:13.143 回答
2

尝试类似的东西

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文件,或者如果您可以访问主配置文件则更好服务器,把过期配置放在那里。看看mod_expires

于 2009-02-09T01:28:09.473 回答
1

如果图像处理程序使用 GD 或 Imagick,它将比常规的 img 标签慢得多。

我建议将图像输出缓存到一个临时文件,如果该文件存在,则图像处理程序只输出该原始数据,但如果应该创建一个新文件,则生成一次,然后再次用于缓存。

您可以使用 htaccess 设置到期时间。

.htaccess 缓存

于 2009-02-09T01:29:39.453 回答
0

这将取决于 imageHandler.php 执行的任务。您可以通过在代码中以毫秒为单位打印时间来测量它。

于 2009-02-09T01:28:35.743 回答