7
7
use Illuminate \Support \Facades \View ;
8
8
use kirksfletcher \pagespeed \filters \RemoveComments ;
9
9
use kirksfletcher \pagespeed \filters \RemoveWhiteSpace ;
10
+ use Mockery \Exception ;
10
11
11
12
class Pagespeed
12
13
{
@@ -29,13 +30,21 @@ public function view($view, $data = [], $slug = '')
29
30
30
31
if ($ this ->allowDynamic ) {
31
32
$ cacheRef = md5 (strtolower ($ view .$ slug ) . serialize ($ data ));
33
+ $ tag = ($ slug == '' ) ? md5 (strtolower ($ view )) : md5 (strtolower ($ slug ));
34
+
35
+ $ view = Cache::tags ([$ tag ])->rememberForever ($ cacheRef , function () use ($ view , $ data ) {
36
+ return $ this ->renderView ($ view , $ data );
37
+ });
32
38
}else {
33
39
$ cacheRef = ($ slug == '' ) ? md5 (strtolower ($ view )) : md5 (strtolower ($ slug ));
40
+
41
+ $ view = Cache::rememberForever ($ cacheRef , function () use ($ view , $ data ) {
42
+ return $ this ->renderView ($ view , $ data );
43
+ });
34
44
}
35
45
36
- $ view = Cache::rememberForever ($ cacheRef , function () use ($ view , $ data ) {
37
- return $ this ->renderView ($ view , $ data );
38
- });
46
+
47
+
39
48
} else {
40
49
$ view = $ this ->renderView ($ view , $ data );
41
50
}
@@ -54,7 +63,13 @@ public function view($view, $data = [], $slug = '')
54
63
public function killCacheView ($ slug )
55
64
{
56
65
$ slug = md5 (strtolower ($ slug ));
57
- Cache::forget ($ slug );
66
+
67
+ if ($ this ->allowDynamic ){
68
+ Cache::tags ([$ slug ])->flush ();
69
+ }else {
70
+ Cache::forget ($ slug );
71
+ }
72
+
58
73
}
59
74
60
75
/**
@@ -84,7 +99,11 @@ public function plugin($plugin, $enable = true)
84
99
*/
85
100
public function allowDynamicContent ($ state = true )
86
101
{
87
- $ this ->allowDynamic = $ state ;
102
+ if (Cache::getStore () instanceof \Illuminate \Cache \TaggableStore) {
103
+ $ this ->allowDynamic = $ state ;
104
+ }else {
105
+ throw new Exception ('Dynamic content caching requires memcached or redis enabled as the cache driver. ' );
106
+ }
88
107
}
89
108
90
109
0 commit comments