使用file_get_contents()访问同服务器URL或本地路径是否发起HTTP请求?
关于file_get_contents()的几个问题解答
传入SVG文件的URL时
当给file_get_contents()传入指向SVG文件的URL(比如https://example.com/icon.svg)时,会发起HTTP请求。PHP的这个函数处理网络URL时,会遵循HTTP协议向目标服务器请求资源,和资源类型无关,只要是合法网络URL就会触发网络请求。
传入本地路径时
如果传入的是本地文件路径(比如./assets/icon.svg或者/var/www/html/icon.svg),函数会直接读取服务器本地文件系统,不会发起任何HTTP请求,仅执行本地文件的IO操作。
多次使用对页面速度的影响
多次调用file_get_contents()确实可能导致页面轻微变慢,分两种情况:
- 调用网络URL:每次调用都会发起独立的HTTP请求,网络延迟、目标服务器响应速度的消耗会叠加,调用次数越多,等待时间越长。
- 调用本地文件:虽为本地IO,但多次读取文件会消耗服务器磁盘IO资源,尤其是文件较大或调用次数极多时,会拖慢页面处理速度。
如果需要多次复用同一个SVG内容,建议将读取到的内容缓存到变量中,后续直接复用变量即可避免重复读取的开销。
内容的提问来源于stack exchange,提问作者Luca Reghellin
相关产品推荐
相关产品推荐

