Last modified: 2013-11-20 04:20:34 UTC
The Wikipedia Zero Varnish configuration and MediaWiki extension modifies webpages to have banners providing attribution to carriers for their partnership on free data access for their subscribers. This technology also rewrites hyperlinks to prompt users in case they're entering into an action that could data charges. As this content is injected into server responses, object cache variance is introduced. Injection of content solely through JavaScript to prevent this sort of cache variance unfortunately wouldn't suffice due to the lower end phones with poor JavaScript support. The solution for major further reduction of cache-varied objects, as presented at https://www.mediawiki.org/wiki/Requests_for_comment/Zero_Architecture, relies on several things, king among them use of Edge Side Includes (ESI) for banner serves. The code is mostly in place, but the ESI implementation is on the back burner due to some tech and personnel constraints. While the ESI implementation is stalled, a need has been uncovered to further vary caches for things like source proxies - namely, the Opera Mini proxy. Some carriers support the Opera Mini proxy for zero-rating and some do not. The banners need to be served conformant with operator implementation. The following change documents the case with Opera Mini (plus a "test) in Varnish that is required. As requested in the change commentary, this bug is being created for tracking purposes. https://gerrit.wikimedia.org/r/#/c/88261/ Upon implementation of change 88261, the following change will be implemented for the app servers https://gerrit.wikimedia.org/r/#/c/95050/ TODOs on this bug: 0) Lightweight analysis of the relative object growth for each additional source proxy (only Opera Mini is of consequence in the immediate near term; presumably ESI will alleviate major issues prior to introduction of further source proxies). 1) Implement ESI. 2) Centralize the X-Forwarded-By / Trusted X-Forwarded-For source IP addresses in cooperation with the Platform team to avoid unnecessary duplication of efforts.