【问题标题】:Nginx: I want to http2_push all js and css files in a directory how can I do?Nginx:我想http2_push一个目录下的所有js和css文件怎么办?
【发布时间】:2019-07-10 13:35:53
【问题描述】:

由于 css 和 js CMS 插件 minifycation 过程,文件是动态创建和删除的,并且名称会随着时间而变化,如何在 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; # 仍然不起作用,但它不再重要了,感谢您的回答。

【问题讨论】:

    标签: javascript css nginx push http2


    【解决方案1】:

    让 PHP 为你做这件事。

    首先在 Nginx 中设置如下配置:

    http2_push_preload on
    

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

    header('Link: </styles/file.css>;rel=preload;as=style>');
    

    然后,Nginx 将使用预加载的 HTTP 标头作为发送 HTTP/2 推送请求的指令。

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

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

    此选项的主要缺点是您 1) 不能对静态资源执行此操作(例如,如果使用 index.html 而不是 index.php)以及 2) 它不会在索引之前开始推送。 php 响应已准备就绪。对于后者,HTTP Status 103 Early Hints 允许快速响应,但找不到任何表明 Nginx 支持这个相对较新的 HTTP Header 的信息。

    【讨论】:

    • 感谢您抽出宝贵时间回复,您的回答在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 文件在浏览器中的使用情况如何?
    • 类似于脚本“js”和样式“css”
    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多