libcachebust/README.md

59 lines
2 KiB
Markdown
Raw Normal View History

2021-04-08 19:38:26 +05:30
<div align="center">
2021-07-04 15:04:14 +05:30
<img
width="250px"
class="greetings"
src="./examples/actix-web/static/cachable/img/Spock_vulcan-salute.png"
alt="logo image"
/>
<h1>
Cache Buster
</h1>
<p>
<strong>May your cache long live and prosper!</strong>
</p>
2021-04-08 19:38:26 +05:30
[![Documentation](https://img.shields.io/badge/docs-master-blue)](https://realaravinth.github.io/cache-buster/cache_buster/index.html)
![CI (Linux)](<https://github.com/realaravinth/cache-buster/workflows/CI%20(Linux)/badge.svg>)
[![dependency status](https://deps.rs/repo/github/realaravinth/cache-buster/status.svg)](https://deps.rs/repo/github/realaravinth/cache-buster)
<br />
[![codecov](https://codecov.io/gh/realaravinth/cache-buster/branch/master/graph/badge.svg)](https://codecov.io/gh/realaravinth/cache-buster)
</div>
2021-05-12 18:20:26 +05:30
## What is cache busting?
To optimise network load time, browsers cache static files. Caching
greatly improves performance but how do you inform browsers to
2021-07-04 15:04:14 +05:30
invalidate cache when your files have changed?
2021-05-12 18:20:26 +05:30
Cache busting is a simple but effective solution for this issue. There
are several ways to achieve this but the way this library does this is
by changing file names to include the hash of the files' contents.
So if you have `bundle.js`, it will become
`bundle.<long-sha256-hash>.js`. This lets you set a super long cache age
as, because of the file names changing, the path to the filename, too,
will change. So as far as the browser is concerned, you are trying to load
a file that it doesn't have. Pretty neat, isn't it?
2021-04-08 19:38:26 +05:30
## Features
- [x] `SHA-256` based name generation during compile-time
- [x] Processes files based on provided MIME filters
2021-04-08 22:11:26 +05:30
- [x] Exposes modified names to program during runtime
2021-04-12 18:23:56 +05:30
- [x] Route prefixes(optional)
2021-04-08 19:38:26 +05:30
## Usage:
Add this to your `Cargo.toml`:
```toml
2021-04-30 20:41:45 +05:30
cache-buster = { version = "0.2", git = "https://github.com/realaravinth/cache-buster" }
2021-04-08 19:38:26 +05:30
```
## Examples:
2021-07-04 15:04:14 +05:30
- See [acix-example](./examples/actix-web)
2021-04-10 18:05:31 +05:30
- See [mCaptcha/guard](https://github.com/mCaptcha/guard) for use
with [Sailfish](https://crates.io/crates/sailfish) template engine.