Files
steamcache2/README.md
Justin Harms 163e64790c
All checks were successful
PR Check / check-and-test (pull_request) Successful in 21s
Enhance garbage collection and caching functionality
- 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.
2025-07-19 02:27:04 -05:00

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/)