Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP能比Apache直接文件访问或重写mod_rewrite in.htaccess的规则更快吗?_Php_Apache_.htaccess_Mod Rewrite_Caching - Fatal编程技术网

PHP能比Apache直接文件访问或重写mod_rewrite in.htaccess的规则更快吗?

PHP能比Apache直接文件访问或重写mod_rewrite in.htaccess的规则更快吗?,php,apache,.htaccess,mod-rewrite,caching,Php,Apache,.htaccess,Mod Rewrite,Caching,我很困惑。我有一个PHP5.6脚本,它正在生成一个.js JavaScript文件。它使用PHP循环回显数组,还包括一些纯文本非PHP部分,还读取十个较小的javascript文件并回显到客户端。最终文件的总大小为560KB,服务器自动压缩输出,并以163KB的压缩量到达客户端。到达客户端需要700到1400毫秒 我想我不应该抱怨,但在我看来,继续通过PHP重建这个文件是没有意义的,所以我准备了一份最终文件的副本,并将其编码为9级,大小为160KB,并尝试跳过PHP,直接或通过.htaccess

我很困惑。我有一个PHP5.6脚本,它正在生成一个.js JavaScript文件。它使用PHP循环回显数组,还包括一些纯文本非PHP部分,还读取十个较小的javascript文件并回显到客户端。最终文件的总大小为560KB,服务器自动压缩输出,并以163KB的压缩量到达客户端。到达客户端需要700到1400毫秒

我想我不应该抱怨,但在我看来,继续通过PHP重建这个文件是没有意义的,所以我准备了一份最终文件的副本,并将其编码为9级,大小为160KB,并尝试跳过PHP,直接或通过.htaccess中的重写规则加载该文件。根据Chrome的网络面板显示,现在总需要1200到1600毫秒才能到达


有没有可能PHP速度太快,以至于缓存文件不好?还是有什么东西需要调整?这一切都是通过共享主机实现的,所以我没有完全的控制权。

我想我忽略了@Capsule指出的所有静态数据这一点。因此,通过使用我的新方案并将其放入一个文件中,我会自动激活对稍后通过ETag发送回的支持(在我在.htaccess中设置了适当的缓存控制之后)


正如@arkascha所指出的,PHP系统可能经过了高度优化,但这只在用户第一次访问该文件时有用;当max age过期并且他们再次请求时,我的PHP脚本不包含尝试发回304的完整方案,因此它必须再次发送整个文件。

一开始听起来很不对劲,但你必须记住,共享主机使用虚拟文件系统,这使得预测访问和读取持续时间是绝对不可能的。这很可能是来自世界各地的此类文件被加载。谢谢。这很奇怪,因为PHP脚本正在从同一个文件系统读取至少十个文件。PHP通常使用字节码缓存。所以这些文件不是从内存中读取的,而是从内存中获取的。我指的是10个JavaScript“数据”文件,除了PHP代码文件。我认为字节码缓存只适用于PHP代码文件。但不管怎样,也许这就是答案:由于PHP脚本被频繁调用,服务器甚至正在缓存它访问的数据文件……谢谢@arkascha。这听起来像是我需要将缓存方法颠倒过来。