【发布时间】:2021-04-20 23:35:00
【问题描述】:
背景:
我在 Armbian (20.11.6) 上有一个类似 RaspberyPi 的小型服务器(准确地说 - 在 Odroid XU4 上)。
我使用 lighttpd 来提供页面(包括 Home Assistant 和一些带有 chartjs 的统计数据和图表)。
(这里的示例文件是 Chart.bundle.min.js.gz)
问题:
似乎越来越多的 javascript 文件变得比 htmls 和数据本身更大(一些用于电力/气体消耗等的数字)。我习惯在服务器上使用 mod_compress、mod_deflate 等(即时压缩文件),但这会杀死 Odroid(或不必要地加载 CPU 和用于缓存的可怜的 SD 卡)。
想法:
现在,想法是,只是压缩 javascript(和其他静态(如 css))文件并将其作为静态 gzip 文件提供,任何现代浏览器都可以/应该处理。
解决方案 0:
我只是压缩了文件,希望浏览器能理解...
(显然,该链接被打包在 script html 标记中,因此如果浏览器知道 gz 是 gzip ......它应该可以工作)。
它没有;)
解决方案 1:
我启用了 mod_compress(在多个页面上建议)并尝试提供静态 js.gz 文件。
https://www.drupal.org/project/javascript_aggregator/issues/601540
https://www.cyberciti.biz/tips/lighttpd-mod_compress-gzip-compression-tutorial.html
没有成功(浏览器将其视为二进制 gzip,而不是应用程序/javascript 类型)。
(有些页面建议启用 mod_deflate,但似乎不存在)
解决方案 2:
(mod_compress 继续)我做了上面的事情,并开始摆弄 HTML 中的 Content-Type、Content-Encoding(在脚本 html 标记中)。这根本不起作用,因为 Content-Type 在 HTML 中可能会受到某种影响,但似乎 Content-Encoding 不能。
https://www.geeksforgeeks.org/http-headers-content-type/
(我不安装 php(它可以做到)以节省内存、sd 卡寿命等)。
解决方案 3:
我在 setenv.add-response-header 中的 10-simple-vhost.conf 默认配置文件中添加了“Content-Encoding”=>“gzip”行。这看起来是一个肮脏的疯狂举动,但我想检查浏览器是否接受我的 js.gz 文件......它没有。
而且根本没有加载任何内容。
问题:
有什么简单的方法可以做到这一点? (不带 php)。
也许像 Apache 中的 htaccess 之类的?
编辑 1:
看来 nginx 可以开箱即用:
Serve static gzip files using node.js
http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
我也在挖掘 lighttpd 中的标题故事:
https://community.splunk.com/t5/Security/How-to-Disable-http-response-gzip-encoding/m-p/64396
编辑 2:
是的...经过一番思考,我想到这个文件似乎可以被缓存很长时间,所以也许我不应该太在意:)
【问题讨论】:
标签: javascript gzip lighttpd