mcp-wordpress 1.1.7 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +388 -66
  2. package/dist/cache/CacheInvalidation.d.ts +118 -0
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -0
  4. package/dist/cache/CacheInvalidation.js +349 -0
  5. package/dist/cache/CacheInvalidation.js.map +1 -0
  6. package/dist/cache/CacheManager.d.ts +143 -0
  7. package/dist/cache/CacheManager.d.ts.map +1 -0
  8. package/dist/cache/CacheManager.js +308 -0
  9. package/dist/cache/CacheManager.js.map +1 -0
  10. package/dist/cache/HttpCacheWrapper.d.ts +121 -0
  11. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -0
  12. package/dist/cache/HttpCacheWrapper.js +280 -0
  13. package/dist/cache/HttpCacheWrapper.js.map +1 -0
  14. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +5 -0
  15. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +1 -0
  16. package/dist/cache/__tests__/CacheInvalidation.test.js +236 -0
  17. package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -0
  18. package/dist/cache/__tests__/CacheManager.test.d.ts +5 -0
  19. package/dist/cache/__tests__/CacheManager.test.d.ts.map +1 -0
  20. package/dist/cache/__tests__/CacheManager.test.js +233 -0
  21. package/dist/cache/__tests__/CacheManager.test.js.map +1 -0
  22. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +5 -0
  23. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +1 -0
  24. package/dist/cache/__tests__/CachedWordPressClient.test.js +228 -0
  25. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -0
  26. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +5 -0
  27. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +1 -0
  28. package/dist/cache/__tests__/HttpCacheWrapper.test.js +296 -0
  29. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -0
  30. package/dist/cache/index.d.ts +12 -0
  31. package/dist/cache/index.d.ts.map +1 -0
  32. package/dist/cache/index.js +9 -0
  33. package/dist/cache/index.js.map +1 -0
  34. package/dist/client/CachedWordPressClient.d.ts +160 -0
  35. package/dist/client/CachedWordPressClient.d.ts.map +1 -0
  36. package/dist/client/CachedWordPressClient.js +338 -0
  37. package/dist/client/CachedWordPressClient.js.map +1 -0
  38. package/dist/client/WordPressClient.d.ts +81 -0
  39. package/dist/client/WordPressClient.d.ts.map +1 -0
  40. package/dist/client/WordPressClient.js +354 -0
  41. package/dist/client/WordPressClient.js.map +1 -0
  42. package/dist/config/ConfigurationSchema.d.ts +281 -0
  43. package/dist/config/ConfigurationSchema.d.ts.map +1 -0
  44. package/dist/config/ConfigurationSchema.js +205 -0
  45. package/dist/config/ConfigurationSchema.js.map +1 -0
  46. package/dist/config/ServerConfiguration.d.ts +38 -0
  47. package/dist/config/ServerConfiguration.d.ts.map +1 -0
  48. package/dist/config/ServerConfiguration.js +158 -0
  49. package/dist/config/ServerConfiguration.js.map +1 -0
  50. package/dist/docs/DocumentationGenerator.d.ts +184 -0
  51. package/dist/docs/DocumentationGenerator.d.ts.map +1 -0
  52. package/dist/docs/DocumentationGenerator.js +735 -0
  53. package/dist/docs/DocumentationGenerator.js.map +1 -0
  54. package/dist/docs/MarkdownFormatter.d.ts +84 -0
  55. package/dist/docs/MarkdownFormatter.d.ts.map +1 -0
  56. package/dist/docs/MarkdownFormatter.js +448 -0
  57. package/dist/docs/MarkdownFormatter.js.map +1 -0
  58. package/dist/docs/index.d.ts +8 -0
  59. package/dist/docs/index.d.ts.map +1 -0
  60. package/dist/docs/index.js +7 -0
  61. package/dist/docs/index.js.map +1 -0
  62. package/dist/index.d.ts +1 -4
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +12 -212
  65. package/dist/index.js.map +1 -1
  66. package/dist/performance/AnomalyDetector.d.ts +63 -0
  67. package/dist/performance/AnomalyDetector.d.ts.map +1 -0
  68. package/dist/performance/AnomalyDetector.js +222 -0
  69. package/dist/performance/AnomalyDetector.js.map +1 -0
  70. package/dist/performance/BenchmarkAnalyzer.d.ts +67 -0
  71. package/dist/performance/BenchmarkAnalyzer.d.ts.map +1 -0
  72. package/dist/performance/BenchmarkAnalyzer.js +301 -0
  73. package/dist/performance/BenchmarkAnalyzer.js.map +1 -0
  74. package/dist/performance/MetricsCollector.d.ts +139 -0
  75. package/dist/performance/MetricsCollector.d.ts.map +1 -0
  76. package/dist/performance/MetricsCollector.js +320 -0
  77. package/dist/performance/MetricsCollector.js.map +1 -0
  78. package/dist/performance/PerformanceAnalytics.d.ts +162 -0
  79. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -0
  80. package/dist/performance/PerformanceAnalytics.js +554 -0
  81. package/dist/performance/PerformanceAnalytics.js.map +1 -0
  82. package/dist/performance/PerformanceMonitor.d.ts +202 -0
  83. package/dist/performance/PerformanceMonitor.d.ts.map +1 -0
  84. package/dist/performance/PerformanceMonitor.js +478 -0
  85. package/dist/performance/PerformanceMonitor.js.map +1 -0
  86. package/dist/performance/TrendAnalyzer.d.ts +69 -0
  87. package/dist/performance/TrendAnalyzer.d.ts.map +1 -0
  88. package/dist/performance/TrendAnalyzer.js +203 -0
  89. package/dist/performance/TrendAnalyzer.js.map +1 -0
  90. package/dist/performance/index.d.ts +11 -0
  91. package/dist/performance/index.d.ts.map +1 -0
  92. package/dist/performance/index.js +8 -0
  93. package/dist/performance/index.js.map +1 -0
  94. package/dist/security/InputValidator.d.ts +215 -0
  95. package/dist/security/InputValidator.d.ts.map +1 -0
  96. package/dist/security/InputValidator.js +278 -0
  97. package/dist/security/InputValidator.js.map +1 -0
  98. package/dist/security/SecurityConfig.d.ts +129 -0
  99. package/dist/security/SecurityConfig.d.ts.map +1 -0
  100. package/dist/security/SecurityConfig.js +262 -0
  101. package/dist/security/SecurityConfig.js.map +1 -0
  102. package/dist/server/ConnectionTester.d.ts +24 -0
  103. package/dist/server/ConnectionTester.d.ts.map +1 -0
  104. package/dist/server/ConnectionTester.js +61 -0
  105. package/dist/server/ConnectionTester.js.map +1 -0
  106. package/dist/server/ToolRegistry.d.ts +46 -0
  107. package/dist/server/ToolRegistry.d.ts.map +1 -0
  108. package/dist/server/ToolRegistry.js +148 -0
  109. package/dist/server/ToolRegistry.js.map +1 -0
  110. package/dist/tools/BaseToolClass.d.ts +76 -0
  111. package/dist/tools/BaseToolClass.d.ts.map +1 -0
  112. package/dist/tools/BaseToolClass.js +104 -0
  113. package/dist/tools/BaseToolClass.js.map +1 -0
  114. package/dist/tools/BaseToolManager.d.ts +26 -0
  115. package/dist/tools/BaseToolManager.d.ts.map +1 -0
  116. package/dist/tools/BaseToolManager.js +56 -0
  117. package/dist/tools/BaseToolManager.js.map +1 -0
  118. package/dist/tools/base.d.ts +37 -0
  119. package/dist/tools/base.d.ts.map +1 -0
  120. package/dist/tools/base.js +60 -0
  121. package/dist/tools/base.js.map +1 -0
  122. package/dist/tools/cache.d.ts +260 -0
  123. package/dist/tools/cache.d.ts.map +1 -0
  124. package/dist/tools/cache.js +237 -0
  125. package/dist/tools/cache.js.map +1 -0
  126. package/dist/tools/index.d.ts +2 -0
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/performance.d.ts +63 -0
  131. package/dist/tools/performance.d.ts.map +1 -0
  132. package/dist/tools/performance.js +865 -0
  133. package/dist/tools/performance.js.map +1 -0
  134. package/dist/types/client.d.ts +1 -0
  135. package/dist/types/client.d.ts.map +1 -1
  136. package/dist/types/client.js.map +1 -1
  137. package/dist/utils/toolWrapper.d.ts +4 -0
  138. package/dist/utils/toolWrapper.d.ts.map +1 -1
  139. package/dist/utils/toolWrapper.js +11 -0
  140. package/dist/utils/toolWrapper.js.map +1 -1
  141. package/dist/utils/validation.d.ts +68 -0
  142. package/dist/utils/validation.d.ts.map +1 -0
  143. package/dist/utils/validation.js +185 -0
  144. package/dist/utils/validation.js.map +1 -0
  145. package/docs/CACHING.md +340 -0
  146. package/docs/DOCKER.md +451 -0
  147. package/docs/PERFORMANCE_MONITORING.md +471 -0
  148. package/docs/SECURITY_TESTING.md +393 -0
  149. package/docs/api/README.md +200 -0
  150. package/docs/api/categories/auth.md +40 -0
  151. package/docs/api/categories/cache.md +41 -0
  152. package/docs/api/categories/comment.md +44 -0
  153. package/docs/api/categories/media.md +43 -0
  154. package/docs/api/categories/page.md +43 -0
  155. package/docs/api/categories/performance.md +44 -0
  156. package/docs/api/categories/post.md +43 -0
  157. package/docs/api/categories/site.md +43 -0
  158. package/docs/api/categories/taxonomy.md +47 -0
  159. package/docs/api/categories/user.md +43 -0
  160. package/docs/api/openapi.json +3305 -0
  161. package/docs/api/summary.json +12 -0
  162. package/docs/api/tools/wp_approve_comment.md +98 -0
  163. package/docs/api/tools/wp_cache_clear.md +120 -0
  164. package/docs/api/tools/wp_cache_info.md +119 -0
  165. package/docs/api/tools/wp_cache_stats.md +119 -0
  166. package/docs/api/tools/wp_cache_warm.md +119 -0
  167. package/docs/api/tools/wp_create_application_password.md +102 -0
  168. package/docs/api/tools/wp_create_category.md +102 -0
  169. package/docs/api/tools/wp_create_comment.md +128 -0
  170. package/docs/api/tools/wp_create_page.md +135 -0
  171. package/docs/api/tools/wp_create_post.md +147 -0
  172. package/docs/api/tools/wp_create_tag.md +101 -0
  173. package/docs/api/tools/wp_create_user.md +135 -0
  174. package/docs/api/tools/wp_delete_application_password.md +101 -0
  175. package/docs/api/tools/wp_delete_category.md +100 -0
  176. package/docs/api/tools/wp_delete_comment.md +101 -0
  177. package/docs/api/tools/wp_delete_media.md +108 -0
  178. package/docs/api/tools/wp_delete_page.md +108 -0
  179. package/docs/api/tools/wp_delete_post.md +117 -0
  180. package/docs/api/tools/wp_delete_tag.md +100 -0
  181. package/docs/api/tools/wp_delete_user.md +108 -0
  182. package/docs/api/tools/wp_get_application_passwords.md +103 -0
  183. package/docs/api/tools/wp_get_auth_status.md +101 -0
  184. package/docs/api/tools/wp_get_category.md +103 -0
  185. package/docs/api/tools/wp_get_comment.md +103 -0
  186. package/docs/api/tools/wp_get_current_user.md +101 -0
  187. package/docs/api/tools/wp_get_media.md +103 -0
  188. package/docs/api/tools/wp_get_page.md +103 -0
  189. package/docs/api/tools/wp_get_page_revisions.md +103 -0
  190. package/docs/api/tools/wp_get_post.md +112 -0
  191. package/docs/api/tools/wp_get_post_revisions.md +103 -0
  192. package/docs/api/tools/wp_get_site_settings.md +108 -0
  193. package/docs/api/tools/wp_get_tag.md +103 -0
  194. package/docs/api/tools/wp_get_user.md +103 -0
  195. package/docs/api/tools/wp_list_categories.md +111 -0
  196. package/docs/api/tools/wp_list_comments.md +111 -0
  197. package/docs/api/tools/wp_list_media.md +145 -0
  198. package/docs/api/tools/wp_list_pages.md +145 -0
  199. package/docs/api/tools/wp_list_posts.md +156 -0
  200. package/docs/api/tools/wp_list_tags.md +110 -0
  201. package/docs/api/tools/wp_list_users.md +111 -0
  202. package/docs/api/tools/wp_performance_alerts.md +162 -0
  203. package/docs/api/tools/wp_performance_benchmark.md +160 -0
  204. package/docs/api/tools/wp_performance_export.md +162 -0
  205. package/docs/api/tools/wp_performance_history.md +161 -0
  206. package/docs/api/tools/wp_performance_optimize.md +162 -0
  207. package/docs/api/tools/wp_performance_stats.md +160 -0
  208. package/docs/api/tools/wp_search_site.md +99 -0
  209. package/docs/api/tools/wp_spam_comment.md +98 -0
  210. package/docs/api/tools/wp_switch_auth_method.md +122 -0
  211. package/docs/api/tools/wp_test_auth.md +96 -0
  212. package/docs/api/tools/wp_update_category.md +102 -0
  213. package/docs/api/tools/wp_update_comment.md +127 -0
  214. package/docs/api/tools/wp_update_media.md +129 -0
  215. package/docs/api/tools/wp_update_page.md +135 -0
  216. package/docs/api/tools/wp_update_post.md +144 -0
  217. package/docs/api/tools/wp_update_site_settings.md +127 -0
  218. package/docs/api/tools/wp_update_tag.md +102 -0
  219. package/docs/api/tools/wp_update_user.md +134 -0
  220. package/docs/api/tools/wp_upload_media.md +131 -0
  221. package/docs/api/types/WordPressPost.md +39 -0
  222. package/docs/contract-testing.md +183 -0
  223. package/docs/developer/NPM_AUTH_SETUP.md +3 -3
  224. package/docs/wordpress-rest-api-authentication-troubleshooting.md +218 -0
  225. package/package.json +84 -64
  226. package/src/cache/CacheInvalidation.ts +421 -0
  227. package/src/cache/CacheManager.ts +391 -0
  228. package/src/cache/HttpCacheWrapper.ts +372 -0
  229. package/src/cache/__tests__/CacheInvalidation.test.ts +299 -0
  230. package/src/cache/__tests__/CacheManager.test.ts +300 -0
  231. package/src/cache/__tests__/CachedWordPressClient.test.ts +304 -0
  232. package/src/cache/__tests__/HttpCacheWrapper.test.ts +359 -0
  233. package/src/cache/index.ts +26 -0
  234. package/src/client/CachedWordPressClient.ts +442 -0
  235. package/src/config/ConfigurationSchema.ts +246 -0
  236. package/src/config/ServerConfiguration.ts +215 -0
  237. package/src/docs/DocumentationGenerator.ts +952 -0
  238. package/src/docs/MarkdownFormatter.ts +494 -0
  239. package/src/docs/index.ts +21 -0
  240. package/src/index.ts +14 -274
  241. package/src/performance/MetricsCollector.ts +447 -0
  242. package/src/performance/PerformanceAnalytics.ts +762 -0
  243. package/src/performance/PerformanceMonitor.ts +649 -0
  244. package/src/performance/index.ts +28 -0
  245. package/src/security/InputValidator.ts +319 -0
  246. package/src/security/SecurityConfig.ts +301 -0
  247. package/src/server/ConnectionTester.ts +74 -0
  248. package/src/server/ToolRegistry.ts +194 -0
  249. package/src/tools/BaseToolManager.ts +66 -0
  250. package/src/tools/cache.ts +259 -0
  251. package/src/tools/index.ts +2 -0
  252. package/src/tools/performance.ts +948 -0
  253. package/src/types/client.ts +1 -0
  254. package/src/utils/toolWrapper.ts +11 -0
  255. package/src/utils/validation.ts +259 -0
@@ -0,0 +1,340 @@
1
+ # Intelligent Caching System
2
+
3
+ The WordPress MCP Server includes a comprehensive intelligent caching system that dramatically improves performance by reducing API calls and providing faster response times.
4
+
5
+ ## 🚀 **Performance Benefits**
6
+
7
+ - **50-70% reduction** in taxonomy API calls (categories, tags)
8
+ - **40-60% reduction** in authentication requests
9
+ - **30-50% reduction** in user profile lookups
10
+ - **Significantly improved** response times for static data
11
+ - **Better rate limit utilization** - 60 requests/minute becomes much more effective
12
+
13
+ ## 🏗️ **Architecture Overview**
14
+
15
+ ### **Multi-Layer Caching System**
16
+
17
+ ```
18
+ Request → Cache Check → API Call (if miss) → Cache Store → Response
19
+ ↑ ↓
20
+ └── ETag Validation ← HTTP Headers ←──────────┘
21
+ ```
22
+
23
+ **Layer 1: HTTP Response Cache**
24
+ - ETags support for efficient revalidation
25
+ - Cache-Control headers based on data volatility
26
+ - Conditional requests (If-None-Match)
27
+
28
+ **Layer 2: In-Memory Application Cache**
29
+ - TTL-based expiration by data type
30
+ - LRU eviction for memory management
31
+ - Site-specific cache keys for multi-site support
32
+
33
+ **Layer 3: Intelligent Invalidation**
34
+ - Event-based cache clearing on content changes
35
+ - Pattern-based invalidation of related data
36
+ - Cascading invalidation (e.g., post changes clear category counts)
37
+
38
+ ## 📊 **Cache Strategies by Data Type**
39
+
40
+ ### **Static Data (4 hour TTL)**
41
+ - Site settings, user roles, capabilities
42
+ - Cache-Control: `public, max-age=14400`
43
+ - **Why**: Changes very rarely, safe to cache long-term
44
+
45
+ ### **Semi-Static Data (2 hour TTL)**
46
+ - Categories, tags, user profiles
47
+ - Cache-Control: `public, max-age=7200`
48
+ - **Why**: Changes occasionally but stable for hours
49
+
50
+ ### **Dynamic Data (15 minute TTL)**
51
+ - Posts, pages, comments
52
+ - Cache-Control: `public, max-age=900`
53
+ - **Why**: Content changes frequently, shorter cache needed
54
+
55
+ ### **Session Data (30 minute TTL)**
56
+ - Authentication status, current user info
57
+ - Cache-Control: `private, max-age=1800`
58
+ - **Why**: User-specific data, moderate stability
59
+
60
+ ## 🛠️ **Cache Management Tools**
61
+
62
+ The system includes dedicated cache management tools:
63
+
64
+ ### **wp_cache_stats**
65
+ Get detailed cache statistics for performance monitoring.
66
+
67
+ ```bash
68
+ wp_cache_stats --site="site1"
69
+ ```
70
+
71
+ **Returns:**
72
+ - Hit/miss rates
73
+ - Total cache entries
74
+ - Eviction statistics
75
+ - Invalidation queue status
76
+
77
+ ### **wp_cache_clear**
78
+ Clear cache entries with optional pattern matching.
79
+
80
+ ```bash
81
+ # Clear all cache
82
+ wp_cache_clear --site="site1"
83
+
84
+ # Clear specific patterns
85
+ wp_cache_clear --site="site1" --pattern="posts"
86
+ wp_cache_clear --site="site1" --pattern="categories"
87
+ ```
88
+
89
+ ### **wp_cache_warm**
90
+ Pre-populate cache with essential WordPress data.
91
+
92
+ ```bash
93
+ wp_cache_warm --site="site1"
94
+ ```
95
+
96
+ Warms cache with:
97
+ - Current user information
98
+ - Categories and tags
99
+ - Site settings
100
+
101
+ ### **wp_cache_info**
102
+ Get detailed cache configuration and status.
103
+
104
+ ```bash
105
+ wp_cache_info --site="site1"
106
+ ```
107
+
108
+ ## ⚙️ **Configuration**
109
+
110
+ ### **Enable/Disable Caching**
111
+
112
+ Caching is **enabled by default**. To disable:
113
+
114
+ ```bash
115
+ export DISABLE_CACHE=true
116
+ ```
117
+
118
+ ### **Cache Settings**
119
+
120
+ Configure via `SecurityConfig.cache` in `src/security/SecurityConfig.ts`:
121
+
122
+ ```typescript
123
+ cache: {
124
+ enabled: true,
125
+ maxSize: 1000, // Maximum cache entries
126
+ defaultTTL: 15 * 60 * 1000, // 15 minutes default
127
+ enableLRU: true,
128
+ enableStats: true,
129
+
130
+ // TTL presets by data type
131
+ ttlPresets: {
132
+ static: 4 * 60 * 60 * 1000, // 4 hours
133
+ semiStatic: 2 * 60 * 60 * 1000, // 2 hours
134
+ dynamic: 15 * 60 * 1000, // 15 minutes
135
+ session: 30 * 60 * 1000, // 30 minutes
136
+ realtime: 60 * 1000 // 1 minute
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## 🔄 **Cache Invalidation**
142
+
143
+ ### **Automatic Invalidation Rules**
144
+
145
+ The system automatically invalidates related cache entries when content changes:
146
+
147
+ **Post Operations:**
148
+ - **Create Post** → Clears posts listings, categories, tags, search
149
+ - **Update Post** → Clears specific post, posts listings, search
150
+ - **Delete Post** → Clears posts listings, categories, tags, search
151
+
152
+ **Category/Tag Operations:**
153
+ - **Create/Update/Delete** → Clears taxonomies AND related posts
154
+ - **Cascading Effect** → Post cache cleared when categories change
155
+
156
+ **User Operations:**
157
+ - **Update User** → Clears user cache, current user cache
158
+ - **User Role Changes** → Clears capability-dependent caches
159
+
160
+ ### **Manual Invalidation**
161
+
162
+ ```bash
163
+ # Clear specific patterns
164
+ wp_cache_clear --pattern="posts.*" # All post-related cache
165
+ wp_cache_clear --pattern="categories" # Category cache
166
+ wp_cache_clear --pattern="users" # User cache
167
+
168
+ # Clear everything (nuclear option)
169
+ wp_cache_clear
170
+ ```
171
+
172
+ ## 🧪 **Testing & Benchmarking**
173
+
174
+ ### **Run Cache Tests**
175
+
176
+ ```bash
177
+ npm run build
178
+ node scripts/test-caching.js
179
+ ```
180
+
181
+ **Tests Include:**
182
+ - Cache infrastructure performance
183
+ - Memory usage analysis
184
+ - Hit/miss rate calculations
185
+ - Invalidation timing
186
+ - Configuration validation
187
+
188
+ ### **Performance Monitoring**
189
+
190
+ Monitor cache effectiveness:
191
+
192
+ ```bash
193
+ # Check cache statistics
194
+ wp_cache_stats --site="your-site"
195
+
196
+ # Monitor hit rates over time
197
+ while true; do
198
+ wp_cache_stats --site="your-site" | grep "hit_rate"
199
+ sleep 30
200
+ done
201
+ ```
202
+
203
+ ### **Expected Performance Gains**
204
+
205
+ **Before Caching:**
206
+ - Categories API call: ~200-500ms
207
+ - Repeated user lookups: ~150-300ms each
208
+ - Site settings: ~100-200ms each call
209
+
210
+ **After Caching:**
211
+ - Categories (cached): ~1-5ms
212
+ - User lookups (cached): ~1-3ms
213
+ - Site settings (cached): ~1-2ms
214
+
215
+ ## 🔐 **Multi-Site Support**
216
+
217
+ Each WordPress site gets isolated cache:
218
+
219
+ **Cache Key Format:**
220
+ ```
221
+ {siteId}:{endpoint}:{params_hash}
222
+ ```
223
+
224
+ **Examples:**
225
+ ```
226
+ site1:posts:abc123 # Site 1 posts listing
227
+ site2:posts:abc123 # Site 2 posts listing (separate)
228
+ site1:categories:def456 # Site 1 categories
229
+ ```
230
+
231
+ **Site-Specific Operations:**
232
+ ```bash
233
+ wp_cache_clear --site="site1" # Clear only site1 cache
234
+ wp_cache_clear --site="site2" --pattern="posts" # Clear site2 posts only
235
+ ```
236
+
237
+ ## 🚨 **Troubleshooting**
238
+
239
+ ### **Cache Not Working**
240
+
241
+ 1. **Check if caching is enabled:**
242
+ ```bash
243
+ wp_cache_info --site="your-site"
244
+ ```
245
+
246
+ 2. **Verify no DISABLE_CACHE environment variable:**
247
+ ```bash
248
+ echo $DISABLE_CACHE # Should be empty or 'false'
249
+ ```
250
+
251
+ 3. **Check cache statistics:**
252
+ ```bash
253
+ wp_cache_stats --site="your-site"
254
+ ```
255
+ - Hit rate should increase over time
256
+ - Total entries should grow with usage
257
+
258
+ ### **Poor Cache Performance**
259
+
260
+ 1. **Monitor hit rates:**
261
+ - Good: >60% hit rate after warm-up
262
+ - Poor: <30% hit rate indicates issues
263
+
264
+ 2. **Check TTL settings:**
265
+ - Too short: Frequent cache misses
266
+ - Too long: Stale data issues
267
+
268
+ 3. **Memory pressure:**
269
+ - LRU evictions happening too frequently
270
+ - Consider increasing `maxSize` in config
271
+
272
+ ### **Stale Data Issues**
273
+
274
+ 1. **Check invalidation:**
275
+ ```bash
276
+ wp_cache_info --site="your-site"
277
+ ```
278
+ - Verify invalidation rules are active
279
+ - Check queue processing status
280
+
281
+ 2. **Manual cache clear:**
282
+ ```bash
283
+ wp_cache_clear --site="your-site" --pattern="problematic_endpoint"
284
+ ```
285
+
286
+ 3. **Verify TTL appropriateness:**
287
+ - Static data: 4h is usually safe
288
+ - Dynamic content: Consider shorter TTL
289
+
290
+ ## 📈 **Optimization Tips**
291
+
292
+ ### **For High-Traffic Sites**
293
+
294
+ 1. **Increase cache size:**
295
+ ```typescript
296
+ maxSize: 2000 // From default 1000
297
+ ```
298
+
299
+ 2. **Tune TTL values:**
300
+ ```typescript
301
+ ttlPresets: {
302
+ static: 8 * 60 * 60 * 1000, // 8 hours for very stable data
303
+ semiStatic: 4 * 60 * 60 * 1000, // 4 hours
304
+ dynamic: 30 * 60 * 1000, // 30 minutes for less active sites
305
+ }
306
+ ```
307
+
308
+ 3. **Pre-warm cache on deployment:**
309
+ ```bash
310
+ wp_cache_warm --site="production-site"
311
+ ```
312
+
313
+ ### **For Development**
314
+
315
+ 1. **Shorter TTL for faster iteration:**
316
+ ```typescript
317
+ ttlPresets: {
318
+ dynamic: 30 * 1000, // 30 seconds for development
319
+ }
320
+ ```
321
+
322
+ 2. **Easy cache clearing:**
323
+ ```bash
324
+ # Add to development scripts
325
+ wp_cache_clear # Clear all during development
326
+ ```
327
+
328
+ ## 🔮 **Future Enhancements**
329
+
330
+ Planned improvements:
331
+
332
+ - **Redis backend** for distributed caching
333
+ - **Cache warming strategies** based on access patterns
334
+ - **Adaptive TTL** based on content change frequency
335
+ - **Cache compression** for larger datasets
336
+ - **Metrics dashboard** for cache performance visualization
337
+
338
+ ---
339
+
340
+ The intelligent caching system provides significant performance improvements while maintaining data freshness appropriate for each content type. It's designed to work transparently with existing WordPress operations while providing tools for monitoring and management.