Repository navigation
Technical Plugin Cache
Caches pages/data and processes expiration and queued invalidation.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
- Code ownership: AVideo Streamer repository.
- Reported version:
10.0. - Source revision:
7d48f2dfc0289236718a3f9fba7c5ffecff4a37f. - Entry class file: Cache.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
Request-local SQL caching, persistent object/database caching and page caching are different layers. executeEveryMinute() processes scheduled invalidations. Check the Scheduler and the specific cache layer before interpreting stale data as a failed write.
| Plugin | Required by declaration | Source reason |
|---|---|---|
| User_Location | Optional | Optional per-location cache variants |
Literal runtime plugin references: User_Location. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
Cache.php:17 |
updateScript() |
Cache.php:44 |
getStart() |
Cache.php:145 |
getEnd() |
Cache.php:236 |
getPluginMenu() |
Cache.php:382 |
getFooterCode() |
Cache.php:389 |
executeEveryMinute() |
Cache.php:547 |
These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.
| Field | Literal default or expression type | Literal source label/help | Evidence |
|---|---|---|---|
enableCachePerUser |
false |
— | source |
enableCacheForLoggedUsers |
false |
— | source |
cacheTimeInSeconds |
600 |
— | source |
cacheDir |
Computed/structured; inspect source | — | source |
logPageLoadTime |
false |
— | source |
stopBotsFromNonCachedPages |
false |
— | source |
deleteStatisticsDaysOld |
180 |
— | source |
maxCachePayloadSizeBytes |
Computed/structured; inspect source | — | source |
cacheFallbackRetentionDays |
Computed/structured; inspect source | — | source |
cacheDeleteBatchSize |
Computed/structured; inspect source | — | source |
cacheDeleteMaxBatchesHttp |
Computed/structured; inspect source | — | source |
cacheDeleteMaxBatchesCli |
Computed/structured; inspect source | — | source |
This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.
| File | Source role | Direct request fields observed |
|---|---|---|
| Cache.php | plugin entry class |
debug_cache, isInfiniteScroll
|
| Objects/CacheDB.php | class/helper implementation | — |
| Objects/CacheLikeEscaper.php | class/helper implementation | — |
| Objects/Cache_schedule_delete.php | class/helper implementation | — |
| Objects/CachesInDB.php | class/helper implementation | — |
| Objects/CachesInDBMem.php | class/helper implementation | — |
| crontab.php | PHP page/include/worker; inspect caller | — |
| deleteStatistics.json.php | JSON entry point; inspect caller and guard | — |
| deleteVideo.json.php | JSON entry point; inspect caller and guard | — |
| install/install.sql | schema/migration SQL | — |
| install/memTable.sql | schema/migration SQL | — |
| install/updateV10.0.sql | schema/migration SQL | — |
| install/updateV3.0.sql | schema/migration SQL | — |
| install/updateV4.0.sql | schema/migration SQL | — |
| install/updateV5.0.sql | schema/migration SQL | — |
| install/updateV6.0.sql | schema/migration SQL | — |
| install/updateV7.0.sql | schema/migration SQL | — |
| install/updateV8.0.sql | schema/migration SQL | — |
| install/updateV9.0.sql | schema/migration SQL | — |
| pluginMenu.js | browser/worker JavaScript; verify loader | — |
Tables named in available CREATE TABLE statements: CachesInDB, CachesInDB_Blob, CachesInDB_Memory, cache_schedule_delete.
Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.
Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.
| Function or method | Source |
|---|---|
getPluginDependencies() |
11 |
getTags() |
17 |
getDescription() |
24 |
getName() |
32 |
getUUID() |
36 |
getPluginVersion() |
40 |
updateScript() |
44 |
getEmptyDataObject() |
58 |
getCacheDir($ignoreFirstPage = true) |
77 |
getFileName() |
111 |
isFirstPage() |
140 |
getStart() |
145 |
getEnd() |
236 |
isREQUEST_URIWhitelisted() |
286 |
isBlacklisted() |
313 |
shouldSkipPageCacheForCurrentRequest() |
319 |
start() |
354 |
end($type = '<string>') |
362 |
getPluginMenu() |
382 |
getFooterCode() |
389 |
getCacheMetaData() |
396 |
_getCache($name, $ignoreMetadata = false) |
422 |
_setCache($name, $value) |
431 |
saveCache() |
440 |
getCache($name, $lifetime = 60, $ignoreMetadata = false) |
458 |
deleteCache($name) |
511 |
deleteAllCache() |
515 |
deleteFirstPageCache() |
519 |
deleteCacheDir($prefix) |
524 |
deleteOldCache($days, $limit = 5000) |
530 |
executeEveryMinute() |
547 |
sanitize_output($buffer) |
582 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: CacheDB.
| Named symbol | Source |
|---|---|
encodeContent($content) |
16 |
deleteCacheStartingWith($name, $schedule=true) |
21 |
deleteCacheWith($name) |
40 |
deleteAllCache() |
49 |
deleteCache($name) |
58 |
getCache($name, $domain, $ishttps, $user_location, $loggedType, $ignoreMetadata = false) |
67 |
setBulkCache($cacheArray, $metadata) |
77 |
Declared classes: CacheLikeEscaper.
| Named symbol | Source |
|---|---|
escapeLikePrefix($value) |
32 |
Declared classes: Cache_schedule_delete.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
setId($id) |
17 |
setName($name) |
21 |
getId() |
26 |
getName() |
30 |
insert($name) |
34 |
Declared classes: CachesInDB.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
31 |
getTableName() |
36 |
shouldThrottleLog($type, $windowSeconds = 30) |
41 |
logSchemaEvent($event, $startTime = 0, $tableExists = false, $extra = []) |
59 |
getCacheSetting($field, $default) |
103 |
getDeleteBatchSize() |
118 |
getDeleteMaxBatchesHttp() |
123 |
getDeleteMaxBatchesCli() |
128 |
getMaxPayloadBytes() |
133 |
getFallbackRetentionDays() |
138 |
escapeLikePrefix($value) |
148 |
getCurrentDatabaseName() |
153 |
cleanupLockKey($prefix) |
175 |
acquireCleanupLock($prefix, $timeoutSeconds = null) |
187 |
releaseCleanupLock($prefix) |
211 |
tryAutoCreateMissingTable() |
225 |
setId($id) |
274 |
setContent($content) |
279 |
setDomain($domain) |
285 |
setIshttps($ishttps) |
290 |
setLoggedType($loggedType) |
295 |
setUser_location($user_location) |
300 |
setExpires($expires) |
305 |
setTimezone($timezone) |
310 |
setName($name) |
315 |
getId() |
320 |
getContent() |
325 |
getDomain() |
331 |
getIshttps() |
336 |
getLoggedType() |
341 |
getUser_location() |
346 |
getExpires() |
351 |
getTimezone() |
356 |
getName() |
361 |
hashName($name) |
366 |
_getCache($name, $domain, $ishttps, $user_location, $loggedType, $ignoreMetadata=false) |
373 |
_setCache($name, $value, $domain, $ishttps, $user_location, $loggedType) |
435 |
prepareCacheItem($name, $cache, $metadata, $tz, $time) |
476 |
setBulkCache($cacheArray, $metadata, $batchSize = 50) |
518 |
readUncomited($uncomited=true) |
584 |
_deleteCache($name) |
594 |
set_innodb_lock_wait_timeout($timeout = 10) |
624 |
_deleteCacheStartingWith($name) |
642 |
describeCaller() |
774 |
deleteExpiredCache($batchSize = null, $maxBatches = null) |
796 |
deleteStaleCacheWithoutExpiration($retentionDays = null, $batchSize = null, $maxBatches = null) |
851 |
_deleteCacheWith($name) |
906 |
_deleteAllCache() |
936 |
encodeContent($content) |
957 |
decodeContent($content) |
971 |
Declared classes: CachesInDBMem.
| Named symbol | Source |
|---|---|
tryToCreateTables() |
17 |
_getCache($name, $domain, $ishttps, $user_location, $loggedType, $ignoreMetadata = false) |
27 |
setBulkCache($cacheArray, $metadata, $batchSize = 50) |
83 |
_setCache($name, $content, $domain, $ishttps, $user_location, $loggedType) |
99 |
_deleteCache($name) |
154 |
_deleteCacheStartingWith($name) |
174 |
_deleteCacheWith($name) |
197 |
_deleteAllCache() |
219 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.
Related test filenames (name matches only; not executed by generation):
- tests/Unit/CacheGrowthRegressionTest.php
- tests/Unit/CacheLikeEscaperTest.php
- tests/Unit/CategoryCacheRegressionTest.php
- tests/Unit/ObjectCacheApiRegressionTest.php
- tests/Unit/ObjectCacheMaintenanceTest.php
- tests/cache-clear-opcache-regression.php
Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides