@@ -79,6 +79,11 @@ async fn main() {
79
79
bust_dir : bust_dir. into ( ) ,
80
80
} ;
81
81
82
+ let cache_none = axum:: middleware:: from_fn ( crate :: cache_none) ;
83
+ let cache_medium = axum:: middleware:: from_fn ( crate :: cache_medium) ;
84
+ let cache_max = axum:: middleware:: from_fn ( crate :: cache_max) ;
85
+ let noindex = axum:: middleware:: from_fn ( crate :: noindex) ;
86
+
82
87
let serve_dir_raw = ServeDir :: new ( & asset_dir)
83
88
. append_index_html_on_directories ( true )
84
89
. precompressed_gzip ( )
@@ -87,29 +92,31 @@ async fn main() {
87
92
. precompressed_zstd ( )
88
93
. fallback ( handle_404. with_state ( state. clone ( ) ) ) ;
89
94
let serve_dir = ServiceBuilder :: new ( )
90
- . layer ( axum :: middleware :: from_fn ( noindex) )
91
- . layer ( axum :: middleware :: from_fn ( cache ) )
95
+ . layer ( noindex. clone ( ) )
96
+ . layer ( cache_max . clone ( ) )
92
97
. service ( serve_dir_raw) ;
93
- let app = Router :: new ( )
94
- . route ( "/ping/redirect" , get ( ping_redirect) )
98
+ let api = Router :: new ( )
95
99
. route ( "/api/:address" , get ( handle_java_ping) )
96
100
. route ( "/api/java/:address" , get ( handle_java_ping) )
97
101
. route ( "/api/bedrock/:address" , get ( handle_bedrock_ping) )
98
102
. route ( "/api/java/" , get ( no_address) )
99
103
. route ( "/api/bedrock/" , get ( no_address) )
100
104
. route ( "/api/services" , get ( services:: handle_mcstatus) )
101
- . layer ( axum:: middleware:: from_fn ( noindex) )
105
+ . layer ( noindex)
106
+ . layer ( cache_none) ;
107
+ let app = Router :: new ( )
102
108
. route ( "/" , get ( root) )
103
109
. route_with_tsr ( "/api/" , get ( api_info) )
110
+ . route ( "/ping/redirect" , get ( ping_redirect) . layer ( cache_max) )
104
111
. route_with_tsr ( "/ping/:edition/:hostname" , get ( ping_page) )
105
112
. route ( "/internal/ping-frame/:edition/:hostname" , get ( ping_frame) )
106
113
. route ( "/internal/ping-markup/:edition/:hostname" , get ( ping_markup) )
107
114
. route (
108
115
"/internal/icon/:edition/:hostname/icon.:ext" ,
109
- get ( ping_image) ,
116
+ get ( ping_image) . layer ( cache_medium ) ,
110
117
)
111
- . layer ( axum:: middleware:: from_fn ( cache_short) )
112
118
. fallback_service ( serve_dir)
119
+ . merge ( api)
113
120
. layer ( axum:: middleware:: from_fn ( csp) )
114
121
. with_state ( state) ;
115
122
@@ -133,8 +140,9 @@ static ROBOTS_NAME: HeaderName = HeaderName::from_static("x-robots-tag");
133
140
static ROBOTS_VALUE : HeaderValue = HeaderValue :: from_static ( "noindex" ) ;
134
141
static CACHE_CONTROL_IMMUTABLE : HeaderValue =
135
142
HeaderValue :: from_static ( "immutable, public, max-age=31536000" ) ;
136
- static CACHE_CONTROL_SHORT : HeaderValue =
137
- HeaderValue :: from_static ( "max-age=30, public, stale-while-revalidate" ) ;
143
+ static CACHE_CONTROL_MEDIUM : HeaderValue =
144
+ HeaderValue :: from_static ( "max-age=7200, public, stale-while-revalidate" ) ;
145
+ static CACHE_CONTROL_NONE : HeaderValue = HeaderValue :: from_static ( "max-age=0, no-store" ) ;
138
146
139
147
static CSP_VALUE : HeaderValue = HeaderValue :: from_static (
140
148
"default-src 'self'; \
@@ -161,17 +169,24 @@ async fn csp(req: Request, next: Next) -> Response {
161
169
resp
162
170
}
163
171
164
- async fn cache ( req : Request , next : Next ) -> Response {
172
+ async fn cache_max ( req : Request , next : Next ) -> Response {
165
173
let mut resp = next. run ( req) . await ;
166
174
resp. headers_mut ( )
167
175
. insert ( CACHE_CONTROL , CACHE_CONTROL_IMMUTABLE . clone ( ) ) ;
168
176
resp
169
177
}
170
178
171
- async fn cache_short ( req : Request , next : Next ) -> Response {
179
+ async fn cache_medium ( req : Request , next : Next ) -> Response {
180
+ let mut resp = next. run ( req) . await ;
181
+ resp. headers_mut ( )
182
+ . insert ( CACHE_CONTROL , CACHE_CONTROL_MEDIUM . clone ( ) ) ;
183
+ resp
184
+ }
185
+
186
+ async fn cache_none ( req : Request , next : Next ) -> Response {
172
187
let mut resp = next. run ( req) . await ;
173
188
resp. headers_mut ( )
174
- . insert ( CACHE_CONTROL , CACHE_CONTROL_SHORT . clone ( ) ) ;
189
+ . insert ( CACHE_CONTROL , CACHE_CONTROL_NONE . clone ( ) ) ;
175
190
resp
176
191
}
177
192
0 commit comments