All checks were successful
PR Check / check-and-test (pull_request) Successful in 21s
- Updated .gitignore to include all .exe files and ensure .smashignore is tracked. - Expanded README.md with advanced configuration options for garbage collection algorithms, detailing available algorithms and use cases. - Modified launch.json to include memory and disk garbage collection flags for better configuration. - Refactored root.go to introduce memoryGC and diskGC flags for garbage collection algorithms. - Implemented hash extraction and verification in steamcache.go to ensure data integrity during caching. - Added new tests in steamcache_test.go for hash extraction and verification, ensuring correctness of caching behavior. - Enhanced garbage collection strategies in gc.go, introducing LFU, FIFO, Largest, Smallest, and Hybrid algorithms with corresponding metrics. - Updated caching logic to conditionally cache responses based on hash verification results.
96 lines
3.4 KiB
Markdown
96 lines
3.4 KiB
Markdown
# SteamCache2
|
|
|
|
SteamCache2 is a blazing fast download cache for Steam, designed to reduce bandwidth usage and speed up game downloads.
|
|
|
|
## Features
|
|
|
|
- High-speed caching for Steam downloads
|
|
- Tiered storage for getting the most out of your storage media
|
|
- Garbage Collected storage for limiting the size of RAM or Disk cache and will not go above what you choose or stop caching unlike others
|
|
- Reduces bandwidth usage
|
|
- Easy to set up and configure aside from dns stuff to trick Steam into using it
|
|
- Supports multiple clients
|
|
|
|
## Usage
|
|
|
|
1. Start the cache server:
|
|
```sh
|
|
./SteamCache2 --memory 1G --disk 10G --disk-path tmp/disk
|
|
```
|
|
|
|
### Advanced Configuration
|
|
|
|
#### Garbage Collection Algorithms
|
|
|
|
SteamCache2 supports multiple garbage collection algorithms for both memory and disk caches:
|
|
|
|
```sh
|
|
# Use LFU for memory cache (good for long-running servers)
|
|
./SteamCache2 --memory 4G --memory-gc lfu --disk 100G --disk-gc lru
|
|
|
|
# Use FIFO for predictable eviction (good for testing)
|
|
./SteamCache2 --memory 2G --memory-gc fifo --disk 50G --disk-gc fifo
|
|
|
|
# Use size-based eviction for disk cache
|
|
./SteamCache2 --memory 1G --disk 200G --disk-gc largest
|
|
```
|
|
|
|
**Available GC Algorithms:**
|
|
|
|
- **`lru`** (default): Least Recently Used - evicts oldest accessed files
|
|
- **`lfu`**: Least Frequently Used - evicts least accessed files (good for popular content)
|
|
- **`fifo`**: First In, First Out - evicts oldest created files (predictable)
|
|
- **`largest`**: Size-based - evicts largest files first (maximizes file count)
|
|
- **`smallest`**: Size-based - evicts smallest files first (maximizes cache hit rate)
|
|
- **`hybrid`**: Combines access time and file size for optimal eviction
|
|
|
|
**Use Cases:**
|
|
- **LAN Events**: Use `lfu` for memory caches to keep popular games
|
|
- **Gaming Cafes**: Use `hybrid` for balanced performance
|
|
- **Testing**: Use `fifo` for predictable behavior
|
|
- **Large Files**: Use `largest` to prioritize keeping many small files
|
|
2. Configure your DNS:
|
|
- If your on Windows and don't want a whole network implementation (THIS)[#windows-hosts-file-override]
|
|
|
|
### Windows Hosts File Override
|
|
|
|
1. Open Notepad as Administrator:
|
|
- Click on the Start menu, type `Notepad`, right-click on Notepad, and select `Run as administrator`.
|
|
|
|
2. Open the Hosts File:
|
|
- In Notepad, go to `File` > `Open`.
|
|
- Navigate to `C:\Windows\System32\drivers\etc`.
|
|
- Select `All Files` from the dropdown menu to see the hosts file.
|
|
- Open the `hosts` file.
|
|
|
|
3. Add the Override Entry:
|
|
- At the end of the file, add a new line with the IP address of your SteamCache2 server followed by `lancache.steamcontent.com`. For example:
|
|
```plaintext
|
|
192.168.1.100 lancache.steamcontent.com
|
|
```
|
|
Replace `192.168.1.100` with the actual IP address of your SteamCache2 server.
|
|
|
|
4. Save the Hosts File:
|
|
- Save the changes by going to `File` > `Save`.
|
|
|
|
5. Flush DNS Cache (optional but recommended):
|
|
- Open Command Prompt as Administrator.
|
|
- Run the following command to flush the DNS cache:
|
|
```sh
|
|
ipconfig /flushdns
|
|
```
|
|
|
|
6. Restart
|
|
- Restart Steam or Restart Your PC
|
|
|
|
This will direct any requests to `lancache.steamcontent.com` to your SteamCache2 server.
|
|
|
|
## License
|
|
|
|
See the [LICENSE](LICENSE) file for details.
|
|
But just for clarity this covers all files in this project unless stated in the individual file.
|
|
|
|
## Acknowledgements
|
|
|
|
- Inspired by [Lancache.net](https://lancache.net/)
|