PHP code example of codewiser / http-cache-control
1. Go to this page and download the library: Download codewiser/http-cache-control library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
codewiser / http-cache-control example snippets
use Codewiser\HttpCacheControl\Contracts\Cacheable;
use Codewiser\HttpCacheControl\Observers\InvalidatesCache;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
use Psr\SimpleCache\CacheInterface;
#[ObservedBy(InvalidatesCache::class)]
class User extends Model implements Cacheable
{
public function cache(): CacheInterface
{
return Cache::tags(['user', 'order']);
}
}
#[ObservedBy(InvalidatesCache::class)]
class Order extends Model implements Cacheable
{
public function cache(): CacheInterface
{
return Cache::tags(['order', 'user']);
}
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->cacheControl(fn(Request $request) => new CacheControlHeader(
public: true,
max_age: 1800,
must_revalidate: true,
));
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->expires(now()->addHour());
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->remember()
->cacheControl(new CacheControlHeader(
public: true,
max_age: now()->addHour(),
must_revalidate: true,
));
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function(Request $request) {
return OrderResource::collection(Order::all())
->whereBelongsTo($request->user()
})
->cacheControl(new CacheControlHeader(
private: true,
max_age: new DateInterval('PT1H'),
must_revalidate: true,
));
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->vary('Accept-Language')
->cacheControl(new CacheControlHeader(
public: true,
max_age: 1800,
must_revalidate: true,
));
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->cacheControl(['public' => true])
// Implicit
->etag()
// Or explicit
->etag(fn() => custom_etag_calculation(Order::all()));
}
use Codewiser\HttpCacheControl\CacheControl;
use Codewiser\HttpCacheControl\CacheControlHeader;
public function index(Request $request)
{
return CacheControl::make(Order::class, function() {
return OrderResource::collection(Order::all())
})
->cacheControl(['public' => true])
// Return timestamp or DateTimeInterface
->lastModified(fn() => Order::all()->max('updated_at'));
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.