Javascript Nginx:我想把所有的js和css文件推送到一个目录中,我该怎么办?

Javascript Nginx:我想把所有的js和css文件推送到一个目录中,我该怎么办?,javascript,css,nginx,push,http2,Javascript,Css,Nginx,Push,Http2,由于css和js CMS插件的缩小过程,文件会动态创建和删除,并且名称会随着时间的推移而改变,我如何才能通过Nginx推送目录上的所有js和css 我试着去做 index index.php; http2_push 'path/to/files' *min.css; #not working http2_push 'path/to/files' *min.js; #not working http2_push 'path/to/file' favicon.ico; #works f

由于css和js CMS插件的缩小过程,文件会动态创建和删除,并且名称会随着时间的推移而改变,我如何才能通过Nginx推送目录上的所有js和css

我试着去做

index index.php;

http2_push 'path/to/files'   *min.css; #not working
http2_push 'path/to/files'    *min.js;  #not working
http2_push 'path/to/file' favicon.ico; #works fine
原谅我,我不是英语母语

谢谢你的时间

更新:在寻找无聊的解决方案之后,我决定走很长的路,我修改了基本插件,创建了一个自定义插件,每次都使用定义的名称创建文件,而不是使用动态名称创建文件。我通过从静态文件的生成中删除$ctime和$hash,删除了所有表示信息的文本字符串

index index.php;

http2_push 'path/to/files' static-name.min.css; #working
http2_push 'path/to/files' static-name.min.js;  #working

http2_push'path/to/file/'*.min.js;#仍然不起作用,但这已经不重要了,谢谢你的回答。

让PHP为你做这件事

首先,在Nginx中设置以下配置:

http2_push_preload on
然后让PHP在对index.PHP的响应中发送预加载链接HTTP头:

header('Link: </styles/file.css>;rel=preload;as=style>');
标题('Link:;rel=preload;as=style>);
然后,Nginx将使用预加载HTTP头作为发送HTTP/2推送请求的指令

这假设您的PHP代码知道要推送的文件或可以找到

使用预加载提示还意味着HTTP/1.1请求也将获得预加载提示,这将告诉浏览器在解析返回的HTML之前尽快请求这些提示


此选项的主要缺点是:1)无法对静态资源执行此操作(例如,如果使用index.html而不是index.php),2)在index.php响应就绪之前,它不会开始推送。对于后者,允许快速响应,但无法找到任何迹象表明Nginx支持这个相对较新的HTTP头。

让PHP为您做这件事

首先,在Nginx中设置以下配置:

http2_push_preload on
然后让PHP在对index.PHP的响应中发送预加载链接HTTP头:

header('Link: </styles/file.css>;rel=preload;as=style>');
标题('Link:;rel=preload;as=style>);
然后,Nginx将使用预加载HTTP头作为发送HTTP/2推送请求的指令

这假设您的PHP代码知道要推送的文件或可以找到

使用预加载提示还意味着HTTP/1.1请求也将获得预加载提示,这将告诉浏览器在解析返回的HTML之前尽快请求这些提示


此选项的主要缺点是:1)无法对静态资源执行此操作(例如,如果使用index.html而不是index.php),2)在index.php响应就绪之前,它不会开始推送。对于后者,允许快速响应,但无法找到任何建议表明Nginx支持此相对较新的HTTP头。

感谢您花时间响应,您的答案是非常成功地在Nginx中使用http2推送,但它并没有解决问题,文件min.js和min.css(每次缩小过程开始时名称都会更改)初始示例:footer-62480877-1550389920.min.js新建页面或清除后缩小文件并创建新文件:footer-78651984-1328469710.min.js目标是推送文件“name”。min.js,无论我的名称或名称更改的次数,http2现在对我有效吗?好的,但你的index.php文件肯定需要知道唯一名称(在HTML中引用它们)?这就是为什么我建议让它启动推送而不是Nginx。这样做的另一个好处是,如果您忘记清理旧文件,就不会推送它们。“好的,但您的index.php文件肯定需要知道唯一名称”当然,这就是问题所在,名称是唯一的,但不是静态的,如果将所有文件推到一个特定目录中,同样的问题就会得到解决,而不是手动指示每个文件的名称,我尝试使用一个通配符,如*min.js,但它不起作用。如果index.php HTML输出没有引用CSS文件,浏览器中会如何使用CSS文件ut?就像脚本“js”和样式“css”一样,感谢您花时间回复,您的回答非常成功地在nginx中使用了http2 push,但它并没有解决问题,文件min.js和min.css(每次缩小过程开始时名称都会更改)初始示例:footer-62480877-1550389920.min.js新建页面或清除后缩小文件并创建新文件:footer-78651984-1328469710.min.js目标是推送文件“name”。min.js,无论我的名称或名称更改的次数,http2现在对我有效吗?好的,但你的index.php文件肯定需要知道唯一名称(在HTML中引用它们)?这就是为什么我建议让它启动推送而不是Nginx。这样做的另一个好处是,如果您忘记清理旧文件,就不会推送它们。“好的,但您的index.php文件肯定需要知道唯一名称”当然,这就是问题所在,名称是唯一的,但不是静态的,如果将所有文件推到一个特定目录中,同样的问题就会得到解决,而不是手动指示每个文件的名称,我尝试使用一个通配符,如*min.js,但它不起作用。如果index.php HTML输出没有引用CSS文件,浏览器中会如何使用CSS文件ut?像脚本“js”和样式“css”