/**
* Edge Cache Optimizer - Advanced CDN and cache warming strategies
* Implements predictive pre-loading and intelligent cache invalidation
*/
///
import { EventEmitter } from "events";
export interface CacheNode {
id: string;
location: {
region: string;
city: string;
coordinates: {
lat: number;
lng: number;
};
};
capacity: number;
used: number;
hitRate: number;
latency: number;
bandwidth: number;
status: "online" | "offline" | "maintenance";
temperature: "cold" | "warm" | "hot";
tier: "edge" | "regional" | "origin";
}
export interface CacheItem {
key: string;
content: ArrayBuffer;
size: number;
contentType: string;
createdAt: number;
lastAccessed: number;
accessCount: number;
ttl: number;
tags: string[];
priority: number;
metadata: {
userId?: string;
region?: string;
contentHash: string;
compression: "none" | "gzip" | "brotli";
};
}
export interface CachePolicy {
maxAge: number;
staleWhileRevalidate: number;
staleIfError: number;
mustRevalidate: boolean;
noCache: boolean;
private: boolean;
public: boolean;
immutable: boolean;
}
export interface WarmingStrategy {
type: "predictive" | "scheduled" | "reactive" | "manual";
triggers: Array<{
event: string;
condition: string;
priority: number;
}>;
contentSelectors: string[];
targetNodes: string[];
schedule?: string;
}
export interface CDNMetrics {
hitRate: number;
missRate: number;
bandwidth: number;
latency: number;
errorRate: number;
cacheSize: number;
requestsPerSecond: number;
bytesSaved: number;
costSavings: number;
}
export declare class EdgeCacheOptimizer extends EventEmitter {
private nodes;
private cache;
private policies;
private warmingStrategies;
private predictor;
private invalidator;
private loadBalancer;
private compressionManager;
private analyticsEngine;
constructor();
/**
* Register cache node in the CDN network
*/
registerNode(node: CacheNode): void;
/**
* Cache content with intelligent placement
*/
cacheContent(key: string, content: ArrayBuffer, contentType: string, policy: CachePolicy, targetNodes?: string[]): Promise<{
cached: string[];
failed: string[];
totalSize: number;
}>;
/**
* Retrieve content from optimal cache node
*/
getContent(key: string, userLocation?: {
lat: number;
lng: number;
}): Promise<{
content: ArrayBuffer | null;
source: string;
latency: number;
cacheHit: boolean;
}>;
/**
* Implement predictive cache warming
*/
warmCache(strategy: WarmingStrategy): Promise<{
itemsWarmed: number;
nodesUpdated: string[];
dataTransferred: number;
estimatedHitRateImprovement: number;
}>;
/**
* Intelligent cache invalidation
*/
invalidateContent(pattern: string | RegExp, tags?: string[], cascading?: boolean): Promise<{
invalidated: number;
nodesAffected: string[];
spaceFree: number;
}>;
/**
* Optimize cache distribution across nodes
*/
optimizeDistribution(): Promise<{
migrations: number;
dataTransferred: number;
expectedHitRateImprovement: number;
costSavings: number;
}>;
/**
* Get comprehensive CDN metrics
*/
getCDNMetrics(): CDNMetrics;
/**
* Configure CDN policy for content types
*/
setPolicy(contentPattern: string, policy: CachePolicy): void;
private initializeOptimizer;
private setupDefaultPolicies;
private selectOptimalNodes;
private cacheOnNode;
private findNearestNode;
private calculateDistance;
private isExpired;
private decompress;
private handleCacheMiss;
private preloadContent;
private scheduleWarming;
private setupReactiveWarming;
private evaluateCondition;
private migrateContent;
private replicateContent;
private evictContent;
private evictLRU;
private calculatePriority;
private calculateHash;
private getDefaultPolicy;
private startBackgroundOptimization;
private cleanupExpiredContent;
}
declare class CachePredictionEngine {
predictContent(selectors: string[], targetNodes: string[]): Promise;
}
declare class CacheInvalidationManager {
cascadeInvalidation(key: string, item: CacheItem): Promise;
}
declare class CDNLoadBalancer {
addNode(node: CacheNode): void;
selectNode(): CacheNode | null;
}
declare class CompressionManager {
compress(item: CacheItem): Promise<{
content: ArrayBuffer;
size: number;
algorithm: "gzip" | "brotli";
}>;
decompress(content: ArrayBuffer, algorithm: string): Promise;
}
declare class CacheAnalyticsEngine {
analyzeDistribution(nodes: Map, cache: Map>): Promise<{
recommendations: any[];
expectedImprovement: number;
costSavings: number;
}>;
estimateHitRateImprovement(itemsWarmed: number, dataTransferred: number): number;
}
export { CachePredictionEngine, CacheInvalidationManager, CDNLoadBalancer, CompressionManager, CacheAnalyticsEngine, };
//# sourceMappingURL=edge-cache-optimizer.d.ts.map