summaryrefslogtreecommitdiffstats
path: root/doc/nghttp.h2r
blob: 9d2a90eff7ae780b9ea08394771ff84a65cbdb10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
DEPENDENCY BASED PRIORITY
-------------------------

nghttp sends priority hints to server by default unless
:option:`--no-dep` is used.  nghttp mimics the way Firefox employs to
manages dependency using idle streams.  We follows the behaviour of
Firefox Nightly as of April, 2015, and nghttp's behaviour is very
static and could be different from Firefox in detail.  But reproducing
the same behaviour of Firefox is not our goal.  The goal is provide
the easy way to test out the dependency priority in server
implementation.

When connection is established, nghttp sends 5 PRIORITY frames to idle
streams 3, 5, 7, 9 and 11 to create "anchor" nodes in dependency
tree:

.. code-block:: text

                      +-----+
                      |id=0 |
                      +-----+
                     ^   ^   ^
              w=201 /    |    \ w=1
                   /     |     \
                  / w=101|      \
              +-----+ +-----+ +-----+
              |id=3 | |id=5 | |id=7 |
              +-----+ +-----+ +-----+
                 ^               ^
             w=1 |           w=1 |
                 |               |
              +-----+         +-----+
              |id=11|         |id=9 |
              +-----+         +-----+

In the above figure, ``id`` means stream ID, and ``w`` means weight.
The stream 0 is non-existence stream, and forms the root of the tree.
The stream 7 and 9 are not used for now.

The URIs given in the command-line depend on stream 11 with the weight
given in :option:`-p` option, which defaults to 16.

If :option:`-a` option is used, nghttp parses the resource pointed by
URI given in command-line as html, and extracts resource links from
it.  When requesting those resources, nghttp uses dependency according
to its resource type.

For CSS, and Javascript files inside "head" element, they depend on
stream 3 with the weight 2.  The Javascript files outside "head"
element depend on stream 5 with the weight 2.  The mages depend on
stream 11 with the weight 12.  The other resources (e.g., icon) depend
on stream 11 with the weight 2.

SEE ALSO
--------

:manpage:`nghttpd(1)`, :manpage:`nghttpx(1)`, :manpage:`h2load(1)`