私はgreasemonkeyのユーザースクリプトのソースを調べていて、cssで次のことに気づきました。
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
私は、greasemonkeyスクリプトが、サーバー上でホストするのではなく、ソース内で可能なものをすべてバンドルしたいと考えていることを理解できます。これは十分に明白です。しかし、私は以前にこのテクニックを見たことがなかったので、その使用を検討しました。それはいくつかの理由で魅力的だと思われます。
- ページ読み込み時のHTTPリクエストの量を減らし、パフォーマンスを向上させます
- CDNがない場合は、画像と一緒に送信されるCookieによって生成されるトラフィックの量が減少します
- CSSファイルをキャッシュできます
- CSSファイルはGZIPPEDにすることができます
IE6(たとえば)が背景画像のキャッシュに問題があることを考えると、これは最悪の考えではないようです...
それで、これは良い習慣ですか、悪い習慣ですか、なぜそれを使用しないのですか、そして画像をbase64エンコードするためにどのツールを使用しますか?
更新-テストの結果
画像を使用したテスト:http://fragged.org/dev/map-shot.jpg-133.6Kb
テストURL: http: //fragged.org/dev/base64.html
専用CSSファイル: http: //fragged.org/dev/base64.css-178.1Kb
GZIPエンコーディングサーバー側
クライアントに送信された結果のサイズ(YSLOWコンポーネントテスト):59.3Kb
クライアントブラウザに送信されたデータの保存:74.3Kb
いいですが、小さい画像には少し役に立たないと思います。
更新:PageSpeedに取り組んでいるGoogleのソフトウェアエンジニアであるBryan McQuadeは、ChromeDevSummit 2013で、CSSのdata:urisは、講演中に重要/最小限のCSSを配信するためのレンダリングブロックアンチパターンと見なされると述べました
#perfmatters: Instant mobile web apps
。http://developer.chrome.com/devsummit /sessionsを参照し、それを覚えておいてください-実際のスライド