| Index: app/lib/package_memcache.dart
|
| diff --git a/app/lib/package_memcache.dart b/app/lib/package_memcache.dart
|
| index 9131e8fb80bf9c392ad015363192977694c3f418..da4a65da35534d6a79aba19681b3ea7d9c41f54d 100644
|
| --- a/app/lib/package_memcache.dart
|
| +++ b/app/lib/package_memcache.dart
|
| @@ -14,9 +14,13 @@ import 'package:pub_server/shelf_pubserver.dart';
|
| final Logger _logger = new Logger('pub.package_memcache');
|
|
|
| abstract class UIPackageCache {
|
| - Future<String> getUIPackagePage(String package);
|
| + // If [version] is `null` then it corresponds to the cache entry which can be
|
| + // invalidated via [invalidateUiPackagePage].
|
| + Future<String> getUIPackagePage(String package, String version);
|
|
|
| - Future setUIPackagePage(String package, String data);
|
| + // If [version] is `null` then it corresponds to the cache entry which can be
|
| + // invalidated via [invalidateUiPackagePage].
|
| + Future setUIPackagePage(String package, String version, String data);
|
|
|
| Future invalidateUIPackagePage(String package);
|
| }
|
| @@ -53,9 +57,9 @@ class AppEnginePackageMemcache implements PackageCache, UIPackageCache {
|
| memcache.set(_packageKey(package), data, expiration: EXPIRATION));
|
| }
|
|
|
| - Future<String> getUIPackagePage(String package) async {
|
| + Future<String> getUIPackagePage(String package, String version) async {
|
| var result = await _ignoreErrors(
|
| - memcache.get(_packageUIKey(package), asBinary: true));
|
| + memcache.get(_packageUIKey(package, version), asBinary: true));
|
|
|
| if (result != null) {
|
| _logger.info('memcache["$package"] rendered UI found');
|
| @@ -66,10 +70,10 @@ class AppEnginePackageMemcache implements PackageCache, UIPackageCache {
|
| return null;
|
| }
|
|
|
| - Future setUIPackagePage(String package, String data) async {
|
| + Future setUIPackagePage(String package, String version, String data) async {
|
| _logger.info('memcache["$package"] setting to new rendered UI data');
|
| return _ignoreErrors(
|
| - memcache.set(_packageUIKey(package),
|
| + memcache.set(_packageUIKey(package, version),
|
| UTF8.encode(data),
|
| expiration: EXPIRATION));
|
| }
|
| @@ -91,7 +95,10 @@ class AppEnginePackageMemcache implements PackageCache, UIPackageCache {
|
|
|
| String _packageKey(String package) => '$keyPrefix$package';
|
|
|
| - String _packageUIKey(String package) => '$uiKeyPrefix$package';
|
| + String _packageUIKey(String package, String version) {
|
| + if (version == null) return '$uiKeyPrefix$package';
|
| + return '$uiKeyPrefix$package**$version';
|
| + }
|
|
|
| // We are ignoring any memcache errors and just return `null` in this case.
|
| //
|
|
|