我有一个网站,客户端搜索一个术语,并通过ajax请求检索结果。在php端,被调用的脚本检查缓存的日期(缓存是文件),如果它比建立的时间早,则刷新结果,否则返回缓存文件内容:die(file_get_contents($cache_path));
缓存时间是几个小时,刷新它需要几秒钟,因此最大部分请求将最终在缓存响应中。
因此我认为使用header("location: $cache_path");
对服务器来说压力较小,因为它只是告诉浏览器从缓存文件中获取内容而不通过脚本传递。
缺点是缓存文件路径将变为公共(这不是最大的问题,因为内容是相同的),但是,你知道,给资源位置永远不会好...
那么,性能方面,file_get_contents和重定向之间有很大的区别吗?平均缓存文件大小为120kb ......还有其他想法和建议吗?
答案 0 :(得分:0)
您可以使用"内部重定向":通过X-Accel-Redirect标头获取nginx或X-Sendfile for Apache。在这种情况下,您不会向客户显示任何其他网址,也不会在您的脚本中处理缓存文件。
有关配置详细信息,您可以阅读an official documentation,或者当然还有其他SO问题(例如this one)。