Spaces:
Running
Running
# Crawl4AI Cache System and Migration Guide | |
## Overview | |
Starting from version 0.5.0, Crawl4AI introduces a new caching system that replaces the old boolean flags with a more intuitive `CacheMode` enum. This change simplifies cache control and makes the behavior more predictable. | |
## Old vs New Approach | |
### Old Way (Deprecated) | |
The old system used multiple boolean flags: | |
- `bypass_cache`: Skip cache entirely | |
- `disable_cache`: Disable all caching | |
- `no_cache_read`: Don't read from cache | |
- `no_cache_write`: Don't write to cache | |
### New Way (Recommended) | |
The new system uses a single `CacheMode` enum: | |
- `CacheMode.ENABLED`: Normal caching (read/write) | |
- `CacheMode.DISABLED`: No caching at all | |
- `CacheMode.READ_ONLY`: Only read from cache | |
- `CacheMode.WRITE_ONLY`: Only write to cache | |
- `CacheMode.BYPASS`: Skip cache for this operation | |
## Migration Example | |
### Old Code (Deprecated) | |
```python | |
import asyncio | |
from crawl4ai import AsyncWebCrawler | |
async def use_proxy(): | |
async with AsyncWebCrawler(verbose=True) as crawler: | |
result = await crawler.arun( | |
url="https://www.nbcnews.com/business", | |
bypass_cache=True # Old way | |
) | |
print(len(result.markdown)) | |
async def main(): | |
await use_proxy() | |
if __name__ == "__main__": | |
asyncio.run(main()) | |
``` | |
### New Code (Recommended) | |
```python | |
import asyncio | |
from crawl4ai import AsyncWebCrawler, CacheMode | |
from crawl4ai.async_configs import CrawlerRunConfig | |
async def use_proxy(): | |
config = CrawlerRunConfig(cache_mode=CacheMode.BYPASS) # Use CacheMode in CrawlerRunConfig | |
async with AsyncWebCrawler(verbose=True) as crawler: | |
result = await crawler.arun( | |
url="https://www.nbcnews.com/business", | |
config=config # Pass the configuration object | |
) | |
print(len(result.markdown)) | |
async def main(): | |
await use_proxy() | |
if __name__ == "__main__": | |
asyncio.run(main()) | |
``` | |
## Common Migration Patterns | |
| Old Flag | New Mode | | |
|-----------------------|---------------------------------| | |
| `bypass_cache=True` | `cache_mode=CacheMode.BYPASS` | | |
| `disable_cache=True` | `cache_mode=CacheMode.DISABLED`| | |
| `no_cache_read=True` | `cache_mode=CacheMode.WRITE_ONLY` | | |
| `no_cache_write=True` | `cache_mode=CacheMode.READ_ONLY` | | |
## Suppressing Deprecation Warnings | |
If you need time to migrate, you can temporarily suppress deprecation warnings: | |
```python | |
# In your config.py | |
SHOW_DEPRECATION_WARNINGS = False | |
``` | |