diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 0be7a31b..5dd15869 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -365,7 +365,6 @@ class AdminController extends Controller $cache = Option::form('cache', OptionForm::AUTO_DETECT, function ($form) { $form->checkbox('enable_avatar_cache')->label(); $form->checkbox('enable_preview_cache')->label(); - $form->checkbox('enable_json_cache', 'JSON Profile')->label(); $form->checkbox('enable_notfound_cache', '404')->label(); }) ->type('warning') diff --git a/app/Http/Controllers/TextureController.php b/app/Http/Controllers/TextureController.php index 4cfe0ed6..b7fb7848 100644 --- a/app/Http/Controllers/TextureController.php +++ b/app/Http/Controllers/TextureController.php @@ -16,6 +16,9 @@ class TextureController extends Controller { public function __construct() { + $this->middleware('cache.headers:public;max_age='.option('cache_expire_time')) + ->only(['json']); + $this->middleware('cache.headers:etag;public;max_age='.option('cache_expire_time')) ->only([ 'preview', @@ -29,16 +32,9 @@ class TextureController extends Controller public function json($player) { - $player = $this->getPlayerInstance($player); - if (option('enable_json_cache')) { - $json = Cache::rememberForever('json-'.$player->pid, function () use ($player) { - return $player->toJson(); - }); - - return response($json) - ->header('Content-Type', 'application/json') - ->setLastModified($player->last_modified); - } + $player = Player::where('name', $player)->firstOrFail(); + $isBanned = $player->user->permission === User::BANNED; + abort_if($isBanned, 403, trans('general.player-banned')); return response()->json($player)->setLastModified($player->last_modified); } @@ -159,12 +155,4 @@ class TextureController extends Controller return $response; } - - protected function getPlayerInstance($player_name) - { - $player = Player::where('name', $player_name)->first(); - abort_if($player->isBanned(), 403, trans('general.player-banned')); - - return $player; - } } diff --git a/app/Listeners/CleanPlayerJson.php b/app/Listeners/CleanPlayerJson.php deleted file mode 100644 index c277e26e..00000000 --- a/app/Listeners/CleanPlayerJson.php +++ /dev/null @@ -1,13 +0,0 @@ -player->pid); - } -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 83a12a0a..d4fe82ac 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -49,8 +49,5 @@ class EventServiceProvider extends ServiceProvider if (option('enable_notfound_cache')) { Event::subscribe(Listeners\CachePlayerExists::class); } - if (option('enable_json_cache')) { - Event::listen(Events\PlayerProfileUpdated::class, Listeners\CleanPlayerJson::class); - } } } diff --git a/resources/lang/en/options.yml b/resources/lang/en/options.yml index 8774b2cd..0612abcb 100644 --- a/resources/lang/en/options.yml +++ b/resources/lang/en/options.yml @@ -206,7 +206,5 @@ cache: enable_preview_cache: title: Texture Preivew label: Enable caching texture preivew - enable_json_cache: - label: Enable caching Json Profile enable_notfound_cache: label: Enable caching whether player is existed or not diff --git a/resources/misc/changelogs/en/5.0.0.md b/resources/misc/changelogs/en/5.0.0.md index 2be78ee0..d24e64f4 100644 --- a/resources/misc/changelogs/en/5.0.0.md +++ b/resources/misc/changelogs/en/5.0.0.md @@ -66,6 +66,7 @@ - Removed Legacy API from core. (Install plugin if you need it.) - Removed Universal Skin API from core. (Install plugin if you need it.) - Removed auto update check. +- Removed cache for Profile JSON. ## Internal Changes diff --git a/resources/misc/changelogs/zh_CN/5.0.0.md b/resources/misc/changelogs/zh_CN/5.0.0.md index 58ef52d1..b4ded061 100644 --- a/resources/misc/changelogs/zh_CN/5.0.0.md +++ b/resources/misc/changelogs/zh_CN/5.0.0.md @@ -66,6 +66,7 @@ - 移除「传统皮肤加载方式」(如有需要,请安装插件) - 移除 Universal Skin API(如有需要,请安装插件) - 移除自动更新检查 +- 移除对 Profile JSON 的缓存 ## 内部更改 diff --git a/tests/BrowserKitTests/AdminFormsTest.php b/tests/BrowserKitTests/AdminFormsTest.php index df7159f8..431f9e1d 100644 --- a/tests/BrowserKitTests/AdminFormsTest.php +++ b/tests/BrowserKitTests/AdminFormsTest.php @@ -190,12 +190,10 @@ class AdminFormsTest extends BrowserKitTestCase ->see(trans('options.cache.driver', ['driver' => config('cache.default')])) ->check('enable_avatar_cache') ->check('enable_preview_cache') - ->check('enable_json_cache') ->check('enable_notfound_cache') ->press('submit_cache'); $this->assertTrue(option('enable_avatar_cache')); $this->assertTrue(option('enable_preview_cache')); - $this->assertTrue(option('enable_json_cache')); $this->assertTrue(option('enable_notfound_cache')); Cache::shouldReceive('flush'); diff --git a/tests/HttpTest/ControllersTest/TextureControllerTest.php b/tests/HttpTest/ControllersTest/TextureControllerTest.php index b56b7ca9..97f849c9 100644 --- a/tests/HttpTest/ControllersTest/TextureControllerTest.php +++ b/tests/HttpTest/ControllersTest/TextureControllerTest.php @@ -40,26 +40,6 @@ class TextureControllerTest extends TestCase $player->user->permission = User::NORMAL; $player->user->save(); - - $this->getJson("/{$player->name}.json") - ->assertJson([ - 'username' => $player->name, - 'skins' => [ - 'default' => $steve->hash, - ], - 'cape' => null, - ])->assertHeader('Last-Modified'); - - option(['enable_json_cache' => true]); - Cache::shouldReceive('rememberForever') - ->withArgs(function ($key, $closure) use ($player) { - $this->assertEquals('json-'.$player->pid, $key); - $this->assertEquals($player->toJson(), $closure()); - - return true; - }) - ->once() - ->andReturn($player->toJson()); $this->getJson("/{$player->name}.json") ->assertJson([ 'username' => $player->name, diff --git a/tests/ListenersTest/CleanPlayerJsonTest.php b/tests/ListenersTest/CleanPlayerJsonTest.php deleted file mode 100644 index 6697e29b..00000000 --- a/tests/ListenersTest/CleanPlayerJsonTest.php +++ /dev/null @@ -1,25 +0,0 @@ - true]); - $provider = new \App\Providers\EventServiceProvider(app()); - $provider->boot(); - - $player = factory(Player::class)->create(); - event(new PlayerProfileUpdated($player)); - Cache::shouldReceive('forget')->with('json-'.$player->pid); - } -}