私は10BASE-Tイーサネット(CS8900)を備えた小型の16ビットマイクロコントローラ(St10)とEasyWebプロジェクトに基づくTcp/IP実装でベアメタルアプリケーションを実行しています。ウェブサイトを1つのファイルとして提供するにはどうすればいいですか?
デバイスのステータス情報を表示するために実装された小さなウェブサーバがあり、設定なども変更できます。ブラウザアクセスのために
、ウェブサーバは、その上index.html
、*.css
、*.js
、*.svg
、*.png
などいくつかのファイルを提供します。
ベアメタルのターゲットにはsdカードのような記憶メディアがないので、上記のすべてのリソースをコンパイルされたバイナリに入れます。
メモリを節約し、トラフィックを減らすために、すべてのファイルをindex.html
個のファイルにまとめて、gzip
を使用して圧縮し、Content-Encoding: gzip
を使用してWebサーバーに配信させます。
すべてのファイルをまとめてindex.htm
にする手順は、現在のところ手動での作業です(ファイル名の参照などを含む)。これを自動的に行うツールがありますか?
または、すべてのファイルを1つのファイルにまとめて、http://www GET /
リクエストで配信できますか?
編集は、2017年10月5日
brain99言及inlinerを使用することにより解決しました。
それはKubuntuの上で16.04ホストを実行して作る小さなトラブルを持つことが、最終的にインストールすることによってそれを修正:
sudo apt-get install nodejs
sudo ln -sT "$(which nodejs)" /usr/local/bin/node
sudo apt-get install npm
sudo npm install -g inliner
をたぶん、私が代わりにnodejs
のを使用してシンボリックリンクを処分したと思います(試していません)。
inliner index.html >index-backed.html
gzip -c index-backed.html >index.html.gz
は、あなたの静的なコンテンツを含むウェブサーバーである[go](https://golang.org)バイナリを1つだけ使用できますか? – nbari
ええと、私は既にHTTPサーバー実装を持っています。ユーザ管理、ダイジェストアクセス認証、セッション管理、動的コンテンツ生成(例えば、yamlとしてのデバイス状態)などが含まれる。 goのアプローチは、それらのすべてを広く更新しているように聞こえるのではないでしょうか? – Joe
はい、それはあなたが正しい言葉のようにすべてをやり直すことを意味するので、あなたが探しているものではないかもしれません。 – nbari