【问题标题】:php header location vs file_get_contents performacephp 标头位置与 file_get_contents 性能
【发布时间】:2016-11-26 15:18:17
【问题描述】:

我有一个网站,客户端搜索一个词并通过 ajax 请求检索结果。在 php 方面,被调用的脚本检查缓存的日期(缓存是文件),如果它早于确定的时间,则刷新结果,否则返回缓存文件内容:die(file_get_contents($cache_path)); 缓存时间是几个小时,刷新只需要几秒钟,所以大部分请求最终都会在缓存响应中结束。 所以我认为使用header("location: $cache_path"); 对服务器来说压力会更小,因为它只是告诉浏览器从缓存文件中获取内容而不通过脚本传递。 缺点是缓存文件路径会公开(这不是最大的问题,因为内容是相同的),但是,你知道,给资源位置永远不会好...... 那么,在性能方面,file_get_contents 和重定向之间有很大区别吗?平均缓存文件大小为 120kb...还有其他想法和建议吗?

【问题讨论】:

  • 任何请求中最长的部分通常是网络延迟和开销。通过重定向客户端,您会引发另一个请求,这对他们来说可能会更慢。如果您担心性能,请设置内存缓存。

标签: php ajax caching header file-get-contents


【解决方案1】:

您可以使用“内部重定向”:通过 nginx 的 X-Accel-Redirect 标头或 Apache 的 X-Sendfile。在这种情况下,您不会向客户端显示任何额外的 URL,也不会处理脚本中的缓存文件。

有关配置详细信息,您可以阅读an official documentation,当然也可以阅读其他 SO 问题(例如 this one)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多