Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
0d314840
Commit
0d314840
authored
Mar 27, 2017
by
Stan Hu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add long polling diagrams
[ci skip]
parent
731d574d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
0 deletions
+48
-0
doc/development/img/cache-hit.svg
doc/development/img/cache-hit.svg
+21
-0
doc/development/img/cache-miss.svg
doc/development/img/cache-miss.svg
+24
-0
doc/development/polling.md
doc/development/polling.md
+3
-0
No files found.
doc/development/img/cache-hit.svg
0 → 100644
View file @
0d314840
<svg
version=
"1.1"
id=
"mscgen_js-svg-__svg"
class=
"mscgen_js-svg-__svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"976"
height=
"310"
viewBox=
"0 0 976 310"
><desc>
# Generated by mscgen_js - https://sverweij.github.io/mscgen_js
msc {
# options
hscale="1.5";
# entities
c [label="Client", textbgcolor="lime"],
rails [label="Rails", textbgcolor="cyan"],
etag [label="EtagCaching", textbgcolor="orange"],
redis [label="Redis", textbgcolor="white"];
# arcs
c =
>
rails [label="GET /projects/5/pipelines"];
rails =
>
etag [label="GET /projects/5/pipelines"];
etag =
>
redis [label="read(key = 'GET
<
Etag
>
')"];
redis =
>
etag [label="cache hit", linecolor="green", textcolor="green"];
|||;
etag =
>
c [label="304 Not Modified", linecolor="blue", textcolor="blue"];
}
</desc><defs><style
type=
"text/css"
>
svg.mscgen_js-svg-__svg{font-family:Helvetica,sans-serif;font-size:12px;font-weight:normal;font-style:normal;text-decoration:none;background-color:white;stroke:black;stroke-width:2;color:black}.mscgen_js-svg-__svg path, .mscgen_js-svg-__svg rect{fill:none;color:black;stroke:black}.mscgen_js-svg-__svg .label-text-background{fill:white;stroke:white;stroke-width:0}.mscgen_js-svg-__svg .bglayer{fill:white;stroke:white;stroke-width:0}.mscgen_js-svg-__svg line{stroke:black}.mscgen_js-svg-__svg .return, .mscgen_js-svg-__svg .comment{stroke-dasharray:5,3}.mscgen_js-svg-__svg .inline_expression_divider{stroke-dasharray:10,5}.mscgen_js-svg-__svg text{color:inherit;stroke:none;text-anchor:middle}.mscgen_js-svg-__svg text.entity-text{text-decoration:underline}.mscgen_js-svg-__svg text.anchor-start{text-anchor:start}.mscgen_js-svg-__svg .arrow-marker{overflow:visible}.mscgen_js-svg-__svg .arrow-style{stroke-width:1}.mscgen_js-svg-__svg .arcrow, .mscgen_js-svg-__svg .arcrowomit, .mscgen_js-svg-__svg .emphasised{stroke-linecap:butt}.mscgen_js-svg-__svg .arcrowomit{stroke-dasharray:2,2;}.mscgen_js-svg-__svg .box, .mscgen_js-svg-__svg .entity{fill:white;stroke-linejoin:round}.mscgen_js-svg-__svg .inherit{stroke:inherit;color:inherit}.mscgen_js-svg-__svg .inherit-fill{fill:inherit}.mscgen_js-svg-__svg .watermark{stroke:black;color:black;fill:black;font-size:48pt;font-weight:bold;opacity:0.14}
</style><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-black"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"black"
fill=
"black"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-black"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"black"
fill=
"black"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-blue"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"blue"
fill=
"blue"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-blue"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"blue"
fill=
"blue"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-green"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"green"
fill=
"green"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-green"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"green"
fill=
"green"
></polygon></marker></defs><g
id=
"mscgen_js-svg-__svg__body"
transform=
"translate(53,3) scale(1,1)"
><g
id=
"mscgen_js-svg-__svg__background"
><rect
width=
"976"
height=
"310"
x=
"-53"
y=
"-3"
class=
"bglayer"
></rect></g><g
id=
"mscgen_js-svg-__svg__arcspanlayer"
></g><g
id=
"mscgen_js-svg-__svg__lifelinelayer"
><line
x1=
"75"
y1=
"38"
x2=
"75"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"38"
x2=
"315"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"38"
x2=
"555"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"38"
x2=
"795"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"76"
x2=
"75"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"76"
x2=
"315"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"76"
x2=
"555"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"76"
x2=
"795"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"114"
x2=
"75"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"114"
x2=
"315"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"114"
x2=
"555"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"114"
x2=
"795"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"152"
x2=
"75"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"152"
x2=
"315"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"152"
x2=
"555"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"152"
x2=
"795"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"190"
x2=
"75"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"190"
x2=
"315"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"190"
x2=
"555"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"190"
x2=
"795"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"228"
x2=
"75"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"228"
x2=
"315"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"228"
x2=
"555"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"228"
x2=
"795"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"266"
x2=
"75"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"266"
x2=
"315"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"266"
x2=
"555"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"266"
x2=
"795"
y2=
"304"
class=
"arcrow"
></line></g><g
id=
"mscgen_js-svg-__svg__sequencelayer"
><g
id=
"mscgen_js-svg-__svgentities"
><g><rect
width=
"150"
height=
"38"
class=
"entity"
style=
"fill:lime;"
></rect><g><text
x=
"75"
y=
"22.5"
class=
"entity-text "
><tspan>
Client
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"240"
class=
"entity"
style=
"fill:cyan;"
></rect><g><text
x=
"315"
y=
"22.5"
class=
"entity-text "
><tspan>
Rails
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"480"
class=
"entity"
style=
"fill:orange;"
></rect><g><text
x=
"555"
y=
"22.5"
class=
"entity-text "
><tspan>
EtagCaching
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"720"
class=
"entity"
style=
"fill:white;"
></rect><g><text
x=
"795"
y=
"22.5"
class=
"entity-text "
><tspan>
Redis
</tspan></text></g></g></g><g><line
x1=
"75"
y1=
"95"
x2=
"315"
y2=
"95"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"134.06"
height=
"14"
x=
"127.97"
y=
"79.5"
class=
"label-text-background"
></rect><text
x=
"195"
y=
"90.5"
class=
"directional-text method-text "
><tspan>
GET /projects/5/pipelines
</tspan></text></g></g><g><line
x1=
"315"
y1=
"133"
x2=
"555"
y2=
"133"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"134.06"
height=
"14"
x=
"367.97"
y=
"117.5"
class=
"label-text-background"
></rect><text
x=
"435"
y=
"128.5"
class=
"directional-text method-text "
><tspan>
GET /projects/5/pipelines
</tspan></text></g></g><g><line
x1=
"555"
y1=
"171"
x2=
"795"
y2=
"171"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"135.64"
height=
"14"
x=
"607.17"
y=
"155.5"
class=
"label-text-background"
></rect><text
x=
"675"
y=
"166.5"
class=
"directional-text method-text "
><tspan>
read(key = 'GET
<
Etag
>
')
</tspan></text></g></g><g><line
x1=
"795"
y1=
"209"
x2=
"555"
y2=
"209"
class=
"arc directional method"
style=
"stroke:green"
marker-end=
"url(#mscgen_js-svg-__svgmethod-green)"
></line><g><rect
width=
"48.02"
height=
"14"
x=
"650.98"
y=
"193.5"
class=
"label-text-background"
></rect><text
x=
"675"
y=
"204.5"
class=
"directional-text method-text "
style=
"fill:green;"
><tspan>
cache hit
</tspan></text></g></g><g></g><g><line
x1=
"555"
y1=
"285"
x2=
"75"
y2=
"285"
class=
"arc directional method"
style=
"stroke:blue"
marker-end=
"url(#mscgen_js-svg-__svgmethod-blue)"
></line><g><rect
width=
"90.72"
height=
"14"
x=
"269.63"
y=
"269.5"
class=
"label-text-background"
></rect><text
x=
"315"
y=
"280.5"
class=
"directional-text method-text "
style=
"fill:blue;"
><tspan>
304 Not Modified
</tspan></text></g></g></g><g
id=
"mscgen_js-svg-__svg__notelayer"
></g><g
id=
"mscgen_js-svg-__svg__watermark"
></g></g></svg>
\ No newline at end of file
doc/development/img/cache-miss.svg
0 → 100644
View file @
0d314840
<svg
version=
"1.1"
id=
"mscgen_js-svg-__svg"
class=
"mscgen_js-svg-__svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"976"
height=
"386"
viewBox=
"0 0 976 386"
><desc>
# Generated by mscgen_js - https://sverweij.github.io/mscgen_js
msc {
# options
hscale="1.5";
# entities
c [label="Client", textbgcolor="lime"],
rails [label="Rails", textbgcolor="cyan"],
etag [label="EtagCaching", textbgcolor="orange"],
redis [label="Redis", textbgcolor="white"];
# arcs
c =
>
rails [label="GET /projects/5/pipelines"];
rails =
>
etag [label="GET /projects/5/pipelines"];
etag =
>
redis [label="read(key = 'GET
<
Etag
>
')"];
redis =
>
etag [label="cache miss", linecolor="red", textcolor="red"];
|||;
etag =
>
redis [label="write('
<
New Etag
>
')"];
etag =
>
rails [label="GET /projects/5/pipelines"];
rails =
>
c [label="JSON response w/ ETag", linecolor="blue", textcolor="blue"];
}
</desc><defs><style
type=
"text/css"
>
svg.mscgen_js-svg-__svg{font-family:Helvetica,sans-serif;font-size:12px;font-weight:normal;font-style:normal;text-decoration:none;background-color:white;stroke:black;stroke-width:2}.mscgen_js-svg-__svg path, .mscgen_js-svg-__svg rect{fill:none}.mscgen_js-svg-__svg .label-text-background{fill:white;stroke:white;stroke-width:0}.mscgen_js-svg-__svg .bglayer{fill:white;stroke:white;stroke-width:0}.mscgen_js-svg-__svg line{}.mscgen_js-svg-__svg .return, .mscgen_js-svg-__svg .comment{stroke-dasharray:5,3}.mscgen_js-svg-__svg .inline_expression_divider{stroke-dasharray:10,5}.mscgen_js-svg-__svg text{color:inherit;stroke:none;text-anchor:middle}.mscgen_js-svg-__svg text.entity-text{text-decoration:underline}.mscgen_js-svg-__svg text.anchor-start{text-anchor:start}.mscgen_js-svg-__svg .arrow-marker{overflow:visible}.mscgen_js-svg-__svg .arrow-style{stroke-width:1}.mscgen_js-svg-__svg .arcrow, .mscgen_js-svg-__svg .arcrowomit, .mscgen_js-svg-__svg .emphasised{stroke-linecap:butt}.mscgen_js-svg-__svg .arcrowomit{stroke-dasharray:2,2}.mscgen_js-svg-__svg .box, .mscgen_js-svg-__svg .entity{fill:white;stroke-linejoin:round}.mscgen_js-svg-__svg .inherit{stroke:inherit;color:inherit}.mscgen_js-svg-__svg .inherit-fill{fill:inherit}.mscgen_js-svg-__svg .watermark{font-size:48pt;font-weight:bold;opacity:0.14}
</style><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-black"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"black"
fill=
"black"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-black"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"black"
fill=
"black"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-blue"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"blue"
fill=
"blue"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-blue"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"blue"
fill=
"blue"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-red"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"1,1 9,3 1,5"
class=
"arrow-style"
stroke=
"red"
fill=
"red"
></polygon></marker><marker
orient=
"auto"
id=
"mscgen_js-svg-__svgmethod-l-red"
class=
"arrow-marker"
viewBox=
"0 0 10 10"
refX=
"9"
refY=
"3"
markerUnits=
"strokeWidth"
markerWidth=
"10"
markerHeight=
"10"
><polygon
points=
"17,1 9,3 17,5"
class=
"arrow-style"
stroke=
"red"
fill=
"red"
></polygon></marker></defs><g
id=
"mscgen_js-svg-__svg__body"
transform=
"translate(53,3) scale(1,1)"
><g
id=
"mscgen_js-svg-__svg__background"
><rect
width=
"976"
height=
"386"
x=
"-53"
y=
"-3"
class=
"bglayer"
></rect></g><g
id=
"mscgen_js-svg-__svg__arcspanlayer"
></g><g
id=
"mscgen_js-svg-__svg__lifelinelayer"
><line
x1=
"75"
y1=
"38"
x2=
"75"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"38"
x2=
"315"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"38"
x2=
"555"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"38"
x2=
"795"
y2=
"76"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"76"
x2=
"75"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"76"
x2=
"315"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"76"
x2=
"555"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"76"
x2=
"795"
y2=
"114"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"114"
x2=
"75"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"114"
x2=
"315"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"114"
x2=
"555"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"114"
x2=
"795"
y2=
"152"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"152"
x2=
"75"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"152"
x2=
"315"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"152"
x2=
"555"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"152"
x2=
"795"
y2=
"190"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"190"
x2=
"75"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"190"
x2=
"315"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"190"
x2=
"555"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"190"
x2=
"795"
y2=
"228"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"228"
x2=
"75"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"228"
x2=
"315"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"228"
x2=
"555"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"228"
x2=
"795"
y2=
"266"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"266"
x2=
"75"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"266"
x2=
"315"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"266"
x2=
"555"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"266"
x2=
"795"
y2=
"304"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"304"
x2=
"75"
y2=
"342"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"304"
x2=
"315"
y2=
"342"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"304"
x2=
"555"
y2=
"342"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"304"
x2=
"795"
y2=
"342"
class=
"arcrow"
></line><line
x1=
"75"
y1=
"342"
x2=
"75"
y2=
"380"
class=
"arcrow"
></line><line
x1=
"315"
y1=
"342"
x2=
"315"
y2=
"380"
class=
"arcrow"
></line><line
x1=
"555"
y1=
"342"
x2=
"555"
y2=
"380"
class=
"arcrow"
></line><line
x1=
"795"
y1=
"342"
x2=
"795"
y2=
"380"
class=
"arcrow"
></line></g><g
id=
"mscgen_js-svg-__svg__sequencelayer"
><g
id=
"mscgen_js-svg-__svgentities"
><g><rect
width=
"150"
height=
"38"
class=
"entity"
style=
"fill:lime;"
></rect><g><text
x=
"75"
y=
"22.5"
class=
"entity-text "
><tspan>
Client
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"240"
class=
"entity"
style=
"fill:cyan;"
></rect><g><text
x=
"315"
y=
"22.5"
class=
"entity-text "
><tspan>
Rails
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"480"
class=
"entity"
style=
"fill:orange;"
></rect><g><text
x=
"555"
y=
"22.5"
class=
"entity-text "
><tspan>
EtagCaching
</tspan></text></g></g><g><rect
width=
"150"
height=
"38"
x=
"720"
class=
"entity"
style=
"fill:white;"
></rect><g><text
x=
"795"
y=
"22.5"
class=
"entity-text "
><tspan>
Redis
</tspan></text></g></g></g><g><line
x1=
"75"
y1=
"95"
x2=
"315"
y2=
"95"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"134.06"
height=
"14"
x=
"127.97"
y=
"79.5"
class=
"label-text-background"
></rect><text
x=
"195"
y=
"90.5"
class=
"directional-text method-text "
><tspan>
GET /projects/5/pipelines
</tspan></text></g></g><g><line
x1=
"315"
y1=
"133"
x2=
"555"
y2=
"133"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"134.06"
height=
"14"
x=
"367.97"
y=
"117.5"
class=
"label-text-background"
></rect><text
x=
"435"
y=
"128.5"
class=
"directional-text method-text "
><tspan>
GET /projects/5/pipelines
</tspan></text></g></g><g><line
x1=
"555"
y1=
"171"
x2=
"795"
y2=
"171"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"135.64"
height=
"14"
x=
"607.17"
y=
"155.5"
class=
"label-text-background"
></rect><text
x=
"675"
y=
"166.5"
class=
"directional-text method-text "
><tspan>
read(key = 'GET
<
Etag
>
')
</tspan></text></g></g><g><line
x1=
"795"
y1=
"209"
x2=
"555"
y2=
"209"
class=
"arc directional method"
style=
"stroke:red"
marker-end=
"url(#mscgen_js-svg-__svgmethod-red)"
></line><g><rect
width=
"60.02"
height=
"14"
x=
"644.98"
y=
"193.5"
class=
"label-text-background"
></rect><text
x=
"675"
y=
"204.5"
class=
"directional-text method-text "
style=
"fill:red;"
><tspan>
cache miss
</tspan></text></g></g><g></g><g><line
x1=
"555"
y1=
"285"
x2=
"795"
y2=
"285"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"103.94"
height=
"14"
x=
"623.02"
y=
"269.5"
class=
"label-text-background"
></rect><text
x=
"675"
y=
"280.5"
class=
"directional-text method-text "
><tspan>
write('
<
New Etag
>
')
</tspan></text></g></g><g><line
x1=
"555"
y1=
"323"
x2=
"315"
y2=
"323"
class=
"arc directional method"
style=
"stroke:black"
marker-end=
"url(#mscgen_js-svg-__svgmethod-black)"
></line><g><rect
width=
"134.06"
height=
"14"
x=
"367.97"
y=
"307.5"
class=
"label-text-background"
></rect><text
x=
"435"
y=
"318.5"
class=
"directional-text method-text "
><tspan>
GET /projects/5/pipelines
</tspan></text></g></g><g><line
x1=
"315"
y1=
"361"
x2=
"75"
y2=
"361"
class=
"arc directional method"
style=
"stroke:blue"
marker-end=
"url(#mscgen_js-svg-__svgmethod-blue)"
></line><g><rect
width=
"130.72"
height=
"14"
x=
"129.63"
y=
"345.5"
class=
"label-text-background"
></rect><text
x=
"195"
y=
"356.5"
class=
"directional-text method-text "
style=
"fill:blue;"
><tspan>
JSON response w/ ETag
</tspan></text></g></g></g><g
id=
"mscgen_js-svg-__svg__notelayer"
></g><g
id=
"mscgen_js-svg-__svg__watermark"
></g></g></svg>
\ No newline at end of file
doc/development/polling.md
View file @
0d314840
...
...
@@ -22,6 +22,9 @@ Instead you should use polling mechanism with ETag caching in Redis.
## How it works
![
Cache miss
](
img/cache-miss.svg
)
![
Cache hit
](
img/cache-hit.svg
)
1.
Whenever a resource changes we generate a random value and store it in
Redis.
1.
When a client makes a request we set the
`ETag`
response header to the value
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment