From c4f5662c123ec5f527098e02101fb439e84ef066 Mon Sep 17 00:00:00 2001 From: A1Gard Date: Wed, 9 Oct 2024 06:12:47 +0330 Subject: [PATCH] added blade cache system to Page Speed Optimization added clear cache to settings --- app/Helpers/Helper.php | 6 ++ .../Controllers/Admin/SettingController.php | 14 +++- composer.json | 1 + composer.lock | 76 ++++++++++++++++++- config/blade-cache-directive.php | 9 +++ database/seeders/SettingSeeder.php | 8 ++ .../views/admin/commons/setting.blade.php | 6 ++ resources/views/layouts/app.blade.php | 8 +- .../FollowUsSocial/FollowUsSocial.blade.php | 2 + .../floats/SimpleGoTop/SimpleGoTop.blade.php | 2 + .../footer/FireFooter/FireFooter.blade.php | 2 + .../ParallaxFooter/ParallaxFooter.blade.php | 2 + .../SimpleFooter/SimpleFooter.blade.php | 2 + .../footer/WaveFooter/WaveFooter.blade.php | 3 +- .../GridPostListSidebar/inc/sidebar.blade.php | 2 + .../inc/sidebar.blade.php | 2 + .../inc/product-sidebar.blade.php | 2 + routes/web.php | 1 + 18 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 config/blade-cache-directive.php diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 3d237e6..86b305b 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1418,3 +1418,9 @@ function findArea($name,$model = null) } return \App\Models\Area::where('name', $name)->first(); } + + +function cacheNumber() +{ + return getSetting('cache_number'); +} diff --git a/app/Http/Controllers/Admin/SettingController.php b/app/Http/Controllers/Admin/SettingController.php index 904bf0c..16adcb3 100644 --- a/app/Http/Controllers/Admin/SettingController.php +++ b/app/Http/Controllers/Admin/SettingController.php @@ -9,6 +9,7 @@ use App\Models\Group; use App\Models\Menu; use App\Models\Setting; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Artisan; class SettingController extends Controller { @@ -18,7 +19,7 @@ class SettingController extends Controller public function index() { // - $settings = Setting::where('active', 1) + $settings = Setting::where('active', true) ->orderBy('section')->get(); //ESH// just active setting`s show $cats = Category::all(['id','name']); $menus = Menu::all(['id','name']); @@ -108,4 +109,15 @@ class SettingController extends Controller { // } + + public function cacheClear(){ + $f = Setting::where('key','cache_number')->first(); + $f->value += 1; + $f->save(); + Artisan::call('cache:clear'); + Artisan::call('config:clear'); + Artisan::call('view:clear'); + Artisan::call('route:clear'); + return redirect()->back()->with(['message' => __('Cache cleared')]); + } } diff --git a/composer.json b/composer.json index fb9ce8c..7cc67c9 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "laravel/ui": "^4.5", "pishran/zarinpal": "^4.3", "plank/laravel-metable": "^6.0", + "ryangjchandler/blade-cache-directive": "^1.0", "spatie/laravel-medialibrary": "^11.4", "spatie/laravel-permission": "^6.7", "spatie/laravel-tags": "^4.6", diff --git a/composer.lock b/composer.lock index 0a580b3..c61fe70 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "09d427100f16e5c56fab40748b855feb", + "content-hash": "ef8964addedfac8764b7d88ec133cf16", "packages": [ { "name": "brick/math", @@ -4413,6 +4413,80 @@ }, "time": "2024-07-08T08:10:42+00:00" }, + { + "name": "ryangjchandler/blade-cache-directive", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/ryangjchandler/blade-cache-directive.git", + "reference": "00b950f3e14a06d58528293e237d58795abe7df3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ryangjchandler/blade-cache-directive/zipball/00b950f3e14a06d58528293e237d58795abe7df3", + "reference": "00b950f3e14a06d58528293e237d58795abe7df3", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^11.0", + "php": "^8.2", + "spatie/laravel-package-tools": "^1.16" + }, + "require-dev": { + "brianium/paratest": "^7.4", + "nunomaduro/collision": "^8.0", + "orchestra/testbench": "^9.0", + "phpunit/phpunit": "^10.0", + "spatie/laravel-ray": "^1.9", + "vimeo/psalm": "^4.4|^5.22" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "RyanChandler\\BladeCacheDirective\\BladeCacheDirectiveServiceProvider" + ], + "aliases": { + "BladeCacheDirective": "RyanChandler\\BladeCacheDirective\\BladeCacheDirectiveFacade" + } + } + }, + "autoload": { + "psr-4": { + "RyanChandler\\BladeCacheDirective\\": "src", + "RyanChandler\\BladeCacheDirective\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Chandler", + "email": "support@ryangjchandler.co.uk", + "role": "Developer" + } + ], + "description": "Cache chunks of your Blade markup with ease.", + "homepage": "https://github.com/ryangjchandler/blade-cache-directive", + "keywords": [ + "blade-cache-directive", + "laravel", + "ryangjchandler" + ], + "support": { + "issues": "https://github.com/ryangjchandler/blade-cache-directive/issues", + "source": "https://github.com/ryangjchandler/blade-cache-directive/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://github.com/ryangjchandler", + "type": "github" + } + ], + "time": "2024-03-13T00:05:30+00:00" + }, { "name": "setasign/fpdi", "version": "v2.6.1", diff --git a/config/blade-cache-directive.php b/config/blade-cache-directive.php new file mode 100644 index 0000000..fac46b3 --- /dev/null +++ b/config/blade-cache-directive.php @@ -0,0 +1,9 @@ + env('BLADE_CACHE_DIRECTIVE_ENABLED', true), + + 'ttl' => env('BLADE_CACHE_DIRECTIVE_TTL', 3600), + +]; diff --git a/database/seeders/SettingSeeder.php b/database/seeders/SettingSeeder.php index 1a10ba8..52e6f9d 100644 --- a/database/seeders/SettingSeeder.php +++ b/database/seeders/SettingSeeder.php @@ -93,6 +93,13 @@ class SettingSeeder extends Seeder 'type' => 'CHECKBOX', 'value' => 0, ], + [ + 'title' => __('Cache'), + 'key' => 'cache_number', + 'type' => 'TEXT', + 'value' => 0, + 'active' => false, + ], ], 'SMS' => [ @@ -223,6 +230,7 @@ class SettingSeeder extends Seeder $setting->value = $set['value'] ?? null; $setting->type = $set['type'] ?? 'TEXT'; $setting->ltr = $set['ltr'] ?? false; + $setting->active = $set['active'] ?? true; $setting->is_basic = true; $setting->size = $set['size'] ?? 12;; $setting->save(); diff --git a/resources/views/admin/commons/setting.blade.php b/resources/views/admin/commons/setting.blade.php index 5ce620f..67b4ebd 100644 --- a/resources/views/admin/commons/setting.blade.php +++ b/resources/views/admin/commons/setting.blade.php @@ -19,6 +19,12 @@ {{__("Recommends")}} + +
+ + {{__("Clear caches")}} + +
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index b172533..c10b444 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -10,9 +10,11 @@
- + @cache('navbar_panel'. cacheNumber()) + + @endcache
@include('components.panel-breadcrumb') diff --git a/resources/views/segments/floats/FollowUsSocial/FollowUsSocial.blade.php b/resources/views/segments/floats/FollowUsSocial/FollowUsSocial.blade.php index e7a9c37..f3063c8 100644 --- a/resources/views/segments/floats/FollowUsSocial/FollowUsSocial.blade.php +++ b/resources/views/segments/floats/FollowUsSocial/FollowUsSocial.blade.php @@ -1,3 +1,4 @@ +@cache('follow_us'. cacheNumber(), 90)
{{__("Follow us")}} @@ -8,3 +9,4 @@ @endforeach
+@endcache diff --git a/resources/views/segments/floats/SimpleGoTop/SimpleGoTop.blade.php b/resources/views/segments/floats/SimpleGoTop/SimpleGoTop.blade.php index a5b2001..3d69b6d 100644 --- a/resources/views/segments/floats/SimpleGoTop/SimpleGoTop.blade.php +++ b/resources/views/segments/floats/SimpleGoTop/SimpleGoTop.blade.php @@ -1,3 +1,5 @@ +@cache('go_top'. cacheNumber()) +@endcache diff --git a/resources/views/segments/footer/FireFooter/FireFooter.blade.php b/resources/views/segments/footer/FireFooter/FireFooter.blade.php index 1ebfa42..291aeae 100644 --- a/resources/views/segments/footer/FireFooter/FireFooter.blade.php +++ b/resources/views/segments/footer/FireFooter/FireFooter.blade.php @@ -1,3 +1,4 @@ +@cache('wave_footer'. cacheNumber(), 90)
+@endcache diff --git a/resources/views/segments/footer/ParallaxFooter/ParallaxFooter.blade.php b/resources/views/segments/footer/ParallaxFooter/ParallaxFooter.blade.php index 667b82f..7f09ddb 100644 --- a/resources/views/segments/footer/ParallaxFooter/ParallaxFooter.blade.php +++ b/resources/views/segments/footer/ParallaxFooter/ParallaxFooter.blade.php @@ -1,3 +1,4 @@ +@cache('parallax_footer'. cacheNumber(), 90)
@@ -44,3 +45,4 @@ {{getSetting('copyright')}}

+@endcache diff --git a/resources/views/segments/footer/SimpleFooter/SimpleFooter.blade.php b/resources/views/segments/footer/SimpleFooter/SimpleFooter.blade.php index 13dc49b..d14a494 100644 --- a/resources/views/segments/footer/SimpleFooter/SimpleFooter.blade.php +++ b/resources/views/segments/footer/SimpleFooter/SimpleFooter.blade.php @@ -1,3 +1,4 @@ +@cache('simple_footer'. cacheNumber(), 90)
@@ -52,3 +53,4 @@

+@endcache diff --git a/resources/views/segments/footer/WaveFooter/WaveFooter.blade.php b/resources/views/segments/footer/WaveFooter/WaveFooter.blade.php index a93f594..962e0eb 100644 --- a/resources/views/segments/footer/WaveFooter/WaveFooter.blade.php +++ b/resources/views/segments/footer/WaveFooter/WaveFooter.blade.php @@ -1,4 +1,4 @@ - +@cache('wave_footer'. cacheNumber(), 90)

{{__("Search")}} @@ -42,3 +43,4 @@ @endforeach +@endcache diff --git a/resources/views/segments/posts_page/SimplePostListSideBar/inc/sidebar.blade.php b/resources/views/segments/posts_page/SimplePostListSideBar/inc/sidebar.blade.php index 7963c72..ef7a2d0 100644 --- a/resources/views/segments/posts_page/SimplePostListSideBar/inc/sidebar.blade.php +++ b/resources/views/segments/posts_page/SimplePostListSideBar/inc/sidebar.blade.php @@ -1,3 +1,4 @@ +@cache('post_sidebar1'. cacheNumber(), 90) +@endcache diff --git a/resources/views/segments/products_page/ProductGridSidebar/inc/product-sidebar.blade.php b/resources/views/segments/products_page/ProductGridSidebar/inc/product-sidebar.blade.php index 6e1af1c..59a2df9 100644 --- a/resources/views/segments/products_page/ProductGridSidebar/inc/product-sidebar.blade.php +++ b/resources/views/segments/products_page/ProductGridSidebar/inc/product-sidebar.blade.php @@ -1,4 +1,5 @@

+ @endcache

{{__("Filter")}} diff --git a/routes/web.php b/routes/web.php index d732278..e966640 100644 --- a/routes/web.php +++ b/routes/web.php @@ -340,6 +340,7 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group( Route::get('index', [\App\Http\Controllers\Admin\SettingController::class, "index"])->name('index'); Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store'); Route::post('update', [\App\Http\Controllers\Admin\SettingController::class, "update"])->name('update'); + Route::get('cache/clear', [\App\Http\Controllers\Admin\SettingController::class, "cacheClear"])->name('cache-clear'); } ); Route::prefix('gfx')->name('gfx.')->group(