In order to improve performance for HTTP API clients, httpcache provides simple tools for caching and invalidating cache. It includes the HTTP verb functions GET, PUT, PATCH, POST, and DELETE, which are drop-in replacements for those in the httr package. These functions are cache-aware and provide default settings for cache invalidation suitable for RESTful APIs; the package also enables custom cache-management strategies. Finally, httpcache includes a basic logging framework to facilitate the measurement of HTTP request time and cache performance.


httpcache can be installed from CRAN with


The pre-release version of the package can be pulled from GitHub using the devtools package:

# install.packages("devtools")
devtools::install_github("nealrichardson/httpcache", build_vignettes=TRUE)

Getting started

Working with httpcache is as simple as loading the package in your interactive session or script instead of httr, or, in package development, importing the HTTP verb functions from httpcache. GET responses are added to the local query cache until PUT, PATCH, POST, or DELETE requests trigger cache invalidation, or until you command the invalidation explicitly. See vignette("httpcache") for examples of the HTTP cache in practice.

For developers

The repository includes a Makefile to facilitate some common tasks.

Running tests

$ make test. Requires the httptest package. You can also specify a specific test file or files to run by adding a “file=” argument, like $ make test file=logging. test_package will do a regular-expression pattern match within the file names. See its documentation in the testthat package.

Updating documentation

$ make doc. Requires the roxygen2 package.