使用PHP提供文件是否会对性能产生重大影响?

时间:2019-02-25 20:03:58

标签: php apache

从理论上讲:

example.com/picture.jpeg直接链接到文件

example.com/some-endpoint/picture.jpeg链接到php脚本,该脚本读取文件并将其作为内容返回。

执行这样的操作是否会受到严重的性能损失?为什么要这样做,我想进行一些身份验证检查,以确保例如用户被授权查看文件/ mofify标头等...

因此,除了运行PHP框架来为文件提供服务的明显开销之外……这会大大降低速度吗?

原因是我不明白为什么用PHP而不是用Apache读取文件会更慢..还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

涉及的过程越多,性能遭受的损失就越大。因此,您可以期望一些会对性能造成影响,但是您需要测量多少,然后确定对您的身份验证而言是否值得。根据我的经验,成本是微不足道的。

一件事,不要忘记扩展性能:当您捆绑PHP进程流文件时,您正在减少可用于处理其他请求的进程总数。

如果您担心规模和性能,请尽一切努力在上游提供此内容。例如:

  1. 在PHP中执行auth检查,然后发出重定向到具有足够大键空间(例如UUID)的CDN -如果您担心人们会重用这些URL,则可能必须定期轮换该键空间中的文件。 / li>
  2. 要求已执行身份验证,并让负载平衡器根据IdP检查身份验证令牌。

在PHP中实现它时,请确保使用禁用输出缓冲的类似readfile之类的东西。否则,您将通过内容的大小来增加Web服务进程的大小,这可能会导致内存不足异常。