Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Mjr Cache Aware Class Loader Laravel Package

modera/mjr-cache-aware-class-loader

A cache-aware PHP class loader for Laravel that speeds up autoloading by caching class lookups and refreshing them when files change. A drop-in replacement for Composer's autoloader aimed at cutting filesystem overhead in larger applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • What it actually is. The listing describes a "Laravel/PHP class loader," but the source evidence shows a Symfony bundle (ModeraMjrCacheAwareClassLoaderBundle) that wraps the MJR/ExtJS dynamic class-loader endpoint with HTTP cache validators (ETag, Last-Modified, Cache-Control, 304). This description/reality gap is the first TPM finding: any adoption decision must be made against the code, not the package summary. A vendor whose metadata misstates its target framework has effectively failed a basic due-diligence check.
  • Architecture fit: poor as a dependency, good as prior art. If our estate is Laravel, there is no service provider, no package discovery, no middleware — integration means importing Symfony bundle registration and routing conventions for one asset concern. The transferable idea is narrow and real: cache-aware, validator-based delivery of dynamically resolved class files so long-running workers and post-deploy clients do not resolve stale or missing classes.
  • Integration feasibility: low. Read-only repository, last tag June 2016, zero stars, zero dependents, no upstream to escalate to. The opportunity: 15.83 and score: 0 are consistent with "reference only." Any use implies an internal fork with permanent ownership, plus compatibility work against PHP 8 / Symfony 5+ / Laravel that the code was never written for.
  • Technical risk: high. Four distinct exposures: (1) unsupported runtime assumptions (PHP 5/7-era type hints, ContainerAware); (2) attacker-controlled input — the className query parameter becomes a filesystem path, so path traversal and arbitrary file read must be verified before any exposure; (3) cache-correctness risk — mtime-derived validators diverge across nodes provisioned at different times, causing clusters to bounce clients between nodes; (4) cache-scope risk — a public Cache-Control on an authenticated class-loader route leaks source through shared proxies.
  • What it earns the roadmap. It is a credible, citable answer to "did anyone solve cache-aware delivery for dynamically loaded classes?" — yes, once, in 2016, in a Symfony/ExtJS admin stack, using HTTP validators rather than a Composer class map. That directly informs sizing of a legacy admin performance spike and the cost of exiting the ExtJS admin panel.
  • Key questions. Is the real target Laravel or a legacy Symfony/MJR app? Is MJR/ExtJS still on the roadmap at all? Which caching layer do we actually lack — browser, reverse proxy, CDN, or application-level class resolution? Can a deploy-stamped asset URL plus standard Cache-Control/ETag and a CDN purge cover the same ground? Who owns legacy MJR/ExtJS support, and does the description mismatch or the read-only status trip our supply-chain policy? What is the license and fork posture if we borrow code?

Integration Approach

  • Stack fit. Do not install this in a Laravel application. For Laravel the correct home for this need is the existing asset pipeline (Vite/AssetMapper), versioned or signed URLs, and CDN cache rules — not a class loader. For a legacy Symfony/MJR application, treat it as a pinned, forked dependency with explicit compatibility testing and no expectation of upstream fixes.
  • Preferred path: reimplement the pattern, not the package. Inventory what the runtime actually needs — which URLs the ExtJS Ext.Loader requests, what validators the current stack emits, where cache headers get overwritten downstream (framework listeners, dev profiler, our own response middleware). Then implement the equivalent contract: build-stamped ETag (deploy ID or content hash, never file mtime), correct 304 with empty body and early return, explicit private vs public decision, and a defined invalidation event on release.
  • Compatibility. Assume PHP 5/7 and Symfony 2/3 conventions. Verify Composer constraints (the split repo may only resolve dev-master), autoloading, bundle registration, and any decorated service or compiler pass before writing a line of integration code. Do not assume PHP 8 or modern Laravel/Symfony parity.
  • Sequencing. (1) One-day reference read of the routing XML, DI configuration, controller, and service definitions — extract the caching contract, not the code. (2) If and only if legacy MJR/ExtJS is in scope, run an isolated proof of concept comparing validator behaviour and 304 rates against the current system. (3) Ship behind a flag in parallel with the existing path, purging cache on deploy. (4) Cut over with regression tests for resource loading and post-deploy invalidation. (5) Otherwise close the evaluation and route the underlying need to the asset/CDN workstream.
  • Deployment discipline is part of the integration, not an afterthought. Class URLs are stable across releases; contents are not. Every option here requires either an assets_version-style query parameter on the loader path or an automated CDN/Varnish purge on release. Short max-age alone ships half-stale Ext.define blocks and intermittent "class not found" errors several clicks into a session.

Operational Impact

  • Maintenance: high burden relative to value. Read-only status means no compatibility updates, no security patches, no release path. Internal ownership means a fork, test coverage, and a named maintainer — a meaningful ongoing cost for a component whose entire contribution is header computation.
  • Support: effectively none. Zero stars and zero dependents mean no community regression detection and no incident history to learn from. The TPM implication: escalations terminate internally, so any incident response plan must assume we are the upstream.
  • Scaling. The intended benefit — fewer origin hits for class files — is real but commodity. A CDN plus correct Cache-Control, a deploy-stamped validator, and a purge-on-release hook deliver the same outcome with a maintained toolchain and far less custom surface area. The bundle offers no modern scaling advantage of its own; notably, mtime-based validators actively degrade behaviour in autoscaled, heterogeneously provisioned fleets.
  • Failure modes. Stale cached classes after deployment (the headline risk, and the one users experience as a broken admin panel); filesystem path traversal or arbitrary file read via className; cross-node ETag divergence producing re-download storms; a public cache header leaking authenticated source; listeners or the dev profiler clobbering Cache-Control; a non-empty 304 body breaking proxies and the Ext loader; and rollback difficulty because cache invalidation semantics were never documented.
  • Ramp-up. Moderate for engineers with legacy Symfony and ExtJS background; steep for a modern Laravel team, where the code volume is small but the domain assumptions carry the cost. Budget the learning in half-days of reading, not days of integration — the value here is comprehension of the caching contract, and the exit criterion is a one-page write-up of that contract folded into the asset-pipeline or CDN backlog.
  • Portfolio signal. A presence of this package anywhere in our estate should be logged as a marker of an ageing ExtJS/Symfony admin surface and used to prioritise the exit migration rather than to extend its life. For stakeholders: nine-year-dormant, zero users, no release path, misdescribed in its own metadata — a documentary artefact, not a production dependency.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin