| # 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 |
| ``` |
|
|