Skip to content

An HTTP server that proxies all requests to other HTTP servers and this servers caches all incoming responses objects

License

Notifications You must be signed in to change notification settings

donutloop/httpcache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

httpcache

Build Status Coverage Status

An HTTP server that proxies all requests to other HTTP servers and this servers caches all incoming responses objects

Backend Requirements

  • golang - The Go Programming Language
  • docker - Build, Manage and Secure Your Apps Anywhere. Your Way.

Prepare GO development environment

Follow install guide to install golang.

Build without docker

mkdir -p $GOPATH/src/github.com/donutloop/ && cd $GOPATH/src/github.com/donutloop/

git clone git@github.com:donutloop/httpcache.git

cd httpcache

go build ./cmd/httpcache

Build with docker

mkdir -p $GOPATH/src/github.com/donutloop/ && cd $GOPATH/src/github.com/donutloop/

git clone git@github.com:donutloop/httpcache.git

docker build .

Usage

USAGE
  httpcache [flags]

FLAGS
  -cap 100          capacity of cache
  -cert server.crt  TLS certificate
  -expire 5         the items in the cache expire after or expire never
  -http :80         serve HTTP on this address (optional)
  -key server.key   TLS key
  -rbcl 524288000   response size limit
  -tls              serve TLS on this address (optional)

Usage of cache from outside (GO Example)

...
transport := &http.Transport{
    Proxy: SetProxyURL(proxyServer.URL), // Set url of http cache 
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

client = &http.Client{
    Transport: transport,
}

client.Do(req)
...

Run container

It's expose port 8000 and run a spefici container by id

sudo docker run  -p 8000:8000 {{container_id}} 

About

An HTTP server that proxies all requests to other HTTP servers and this servers caches all incoming responses objects

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published