Spaces:
Sleeping
Sleeping
| # 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 | |
| ``` | |