Request #1 Headers
------------------
GET /file1.txt HTTP/1.1
Response #1 Headers
------------------
HTTP/1.1200 OK
Date: Tue, 01 Mar 201122:44:26 GMT
ETag: "686897696a7c876b7e"
Expires: Tue, 01 Mar 201222:44:26 GMT
Cache-Control: private, max-age=31536000
Request #2 Headers
------------------
GET /file1.txt HTTP/1.1
If-None-Match: "686897696a7c876b7e"
Response #2 Headers
------------------
HTTP/1.1304 Not Modified
Date: Tue, 01 Mar 201122:44:28 GMT
Caching Big Files
HTTP If-Modified-Since header is used
Request #1 Headers
------------------
GET /file1.txt HTTP/1.1
Response #1 Headers
------------------
HTTP/1.1200 OK
Date: Tue, 01 Mar 201122:44:26 GMT
Last-Modified: Wed, 30 Jun 201021:36:48 GMT
Expires: Tue, 01 Mar 201222:44:26 GMT
Cache-Control: private, max-age=31536000
Request #2 Headers
------------------
GET /file1.txt HTTP/1.1
If-Modified-Since: Wed, 30 Jun 201021:36:48 GMT
Response #2 Headers
------------------
HTTP/1.1304 Not Modified
Date: Tue, 01 Mar 201122:44:28 GMT
Compression
HTTP Accept-Encoding header is used by the caller to nominate their supported compression
algorithm. We return the compression format used in the Content-Encoding header.
Request
-------
GET /encrypted-area HTTP/1.1
Host: www.example.com
Accept-Encoding: gzip, deflate
Response
--------
HTTP/1.1200 OK
Content-Encoding: gzip
Note
If a response includes both an Expires header and a max-age directive, the max-age directive overrides the Expires
header, even if the Expires header is more restrictive
Handles downloading of static files and resources.
To trigger a download, send a org.mashupbots.socko.handlers.StaticFileRequest or org.mashupbots.socko.handlers.StaticResourceRequest message from your routes.
org.mashupbots.socko.handlers.StaticContentHandler performs HTTP compression and also uses the
If-Modified-Since
header for browser side caching.Configuration
org.mashupbots.socko.handlers.StaticContentHandler uses lots of disk IO (blocking code). Please run it using a router with
PinnedDispatcher
(a thread per actor) orBalancingDispatcher
.For example:
Configuration in
application.conf
:Caching Small Files
HTTP
ETag
header is used.Caching Big Files
HTTP
If-Modified-Since
header is usedCompression
HTTP
Accept-Encoding
header is used by the caller to nominate their supported compression algorithm. We return the compression format used in theContent-Encoding
header.Note
If a response includes both an Expires header and a max-age directive, the max-age directive overrides the Expires header, even if the Expires header is more restrictive
See HTTP Header Field Definitions