Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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脚本_Php_Caching - Fatal编程技术网

当请求某个目录中的文件时,运行PHP脚本

当请求某个目录中的文件时,运行PHP脚本,php,caching,Php,Caching,我刚刚编写了一些PHP代码,将我网站上的所有JS合并到一个文件中,对其进行散列,然后以散列文件名作为源文件回显标记。我将所有这些散列文件存储在一个文件夹中,并在每次生成新散列时删除旧散列 我希望能够打开此文件的缓存,因为哈希文件名决定浏览器何时需要下载新文件(即:它请求的实际URL不同)。有人知道如何在PHP中钩住这个请求吗?比如: if ($_GET['folder'] = "path/to/hashed/folder/or/file") { //Do something } 非常感

我刚刚编写了一些PHP代码,将我网站上的所有JS合并到一个文件中,对其进行散列,然后以散列文件名作为源文件回显
标记。我将所有这些散列文件存储在一个文件夹中,并在每次生成新散列时删除旧散列

我希望能够打开此文件的缓存,因为哈希文件名决定浏览器何时需要下载新文件(即:它请求的实际URL不同)。有人知道如何在PHP中钩住这个请求吗?比如:

if ($_GET['folder'] = "path/to/hashed/folder/or/file")
{
    //Do something
}

非常感谢您的帮助。

除非您使用PHP为JavaScript提供服务,否则无法连接到请求中。但是,您不需要使用PHP设置缓存头。您可以将web服务器配置为直接执行此操作。如何执行此操作取决于您使用的服务器。

此操作将使用名为.htaccess的文件。下面是一个简单的规则,它通过一个名为index.php的文件发送所有内容

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/some_file_that_you_want_to_exclude_from_this_rule
RewriteCond %{REQUEST_URI} !^/some_other_file_that_you_want_to_exclude_from_this_rule
RewriteRule ^(.*)$ index.php [L]

完整URL将位于$\u服务器['REQUEST\u URI'],而$\u服务器中的其他变量将指向其他信息($\u服务器['REDIRECT\u URL']不包括主机名)。

没有迹象表明Apache是正在使用的服务器。即使是这样,通常也不需要使用
.htaccess
文件。。。只有当您需要的指令可以放在主配置文件中或包含在主配置文件中时,它们才会降低速度。最后,问题中没有任何东西表明所有请求都应该通过PHP发送。对于简单的缓存指令,web服务器本身能够添加适当的头。