mobilefuse/cachebuster
Composer 安装命令:
composer require mobilefuse/cachebuster
包简介
Adds MD5 hashes to the URLs of your application's assets, so when they change, their URL changes.
关键字:
README 文档
README
Laravel Cachebuster
Adds MD5 hashes to the URLs of your application's assets, so when they change, their URL changes. URLs contained in your
css files are transformed automatically; other URLs (such as those referenced via <script>, <link> and <img> tags)
are easy to transform too via a helper function in your blade templates.
Also supports adding a CDN proxy prefix to your asset URLs, to quickly and easily add the performance and scalability of a transparent CDN such as Cloudfront to your app.
Installation
To get the version of cachebuster compatible with your version of laravel, follow the notes below regarding installation
- Add the following to your composer.json
For Laravel 5.x
"themonkeys/cachebuster" :"2.*"
For Laravel 4.x
"themonkeys/cachebuster" :"1.*"
Note: IFor continued Laravel 4 support, please use the cachebuster 1.x releases, and not dev-master*
-
Run
composer update -
Once cachebuster is installed you need to register the service provider with the application. Open up
app/config/app.phpand find theproviderskey.
'providers' => array( 'Themonkeys\Cachebuster\CachebusterServiceProvider', )
- The package ships with a facade which provides a concise static syntax for encoding your URLs. You can register the
facade via the
aliaseskey of yourapp/config/app.phpfile.
'aliases' => array( 'Bust' => 'Themonkeys\Cachebuster\Cachebuster' )
- Add the following to your .htaccess file before the Laravel rewrite rule:
# ------------------------------------------------------------------------------ # | Remove cachebuster hash from request URLs if present | # ------------------------------------------------------------------------------ <IfModule mod_rewrite.c> RewriteRule ^(.*)-[0-9a-f]{32}(\.(.*))$ $1$2 [DPI] </IfModule>
Note: If you're using NGINX and not interpreting
.htaccessfiles, see this gist by @RTC1 for the equivalent NGINX rewrite rule.
And add the following to your .htaccess file after the Laravel rewrite rule:
# ------------------------------------------------------------------------------ # | Allow Laravel to pre-process the css to add cachebusters to image urls | # ------------------------------------------------------------------------------ <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} !^/index.php RewriteRule ^(.*\.css)$ index.php [L] </IfModule>
- Finally, add this to your
app/routes.phpfile:
Route::get('{path}', function($filename) { return Bust::css($filename); })->where('path', '.*\.css$'); App::make('cachebuster.StripSessionCookiesFilter')->addPattern('|\.css$|');
Note: this wildcard route is known to conflict with the wildcard route used by croppa, rendering Croppa ineffective. Should that affect you, simply be more specific with the CSS route. For example, if all your css files are in a
css/folder:Route::get('/css/{path}', function($filename) { return Bust::css("/css/$filename"); })->where('path', '.*\.css$');Or you could even use
Bust::css()within a filter instead.
Configuration
To configure the package, you can use the following command which wil publish the configuration file(s) to app/config/.
Laravel 5.x
php artisan vendor:publish
Will publish to: /app/config/cachebuster.php.
The settings themselves are documented inside /app/config/cachebuster.php. You can change the default settings here too, for when the environment variables are not detected.
Note: Laravel 5.x changed envronment configuration to use dotEnv files, and you will need to "enable" cachebuster using the dotEnv paradigm for each environment your application requires.
For example, to enable cachebuster, open up your .env file, and add the following line
CACHEBUSTER_ENABLED = true
Laravel 4.x
php artisan config:publish themonkeys/cachebuster
Will publish to: app/config/packages/themonkeys/cachebuster.
Or you can just create a new file in that folder and only override the settings you need. The settings themselves are documented inside app/config/packages/themonkeys/cachebuster/config.php.
Using Laravel's built-in development server
You may want to use Laravel's built-in development server to serve your application, for example for automated testing.
Since that server doesn't support the necessary URL rewriting, the simplest solution is to disable cachebusting for that
environment. Do that by creating the file app/config/packages/themonkeys/cachebuster/testing/config.php (replace
testing with the environment used by the development server) with the contents:
<?php
return array(
'enabled' => false,
);
If, instead, you still want to enable cachebusting under the development server, you can use the code in [this gist] (https://gist.github.com/felthy/3fc1675a6a89db891396). Thanks to RTC1 for the original code upon which that gist is based.
Usage
Wherever you specify an asset path in your blade templates, use Bust::url() to transform the path. For example, a
script tag like this...
<script src="{{ Bust::url('/js/main.js') }}"></script>
...will look like this to your users:
<script src="/js/main-a09b64644df96f807a0db134d27912bf.js"></script>
Or if you've configured a CDN it might look like:
<script src="//a1bc23de4fgh5i.cloudfront.net/js/main-a09b64644df96f807a0db134d27912bf.js"></script>
The same goes for <img> tags:
<img src="{{ Bust::url('/img/spacer.gif') }}" alt="">
will look like this to your users:
<img src="/img/spacer-5e416a75e3af86e42b1a3bc8efc33ebc.gif" alt="">
The final piece of the puzzle is your css:
<link rel="stylesheet" href="{{ Bust::url('/css/main.css') }}">
comes out looking like this:
<link rel="stylesheet" href="/css/main-f75168d5f53c7a09d9a08840d7b5a5ec.css">
Some real magic happens here - all the URLs inside your CSS file (images, fonts etc.) are automatically passed through the cachebuster, so they now have hashes in their filenames too. Open the CSS file in your browser and have a look!
Absolute URLs
Sometimes you might want to specify an absolute URL, for example in an OpenGraph meta tag. That's easy:
<meta property="og:image" content="{{ Bust::url('/img/share-thumbnail.jpg', true) }}" />
might come out as:
<meta property="og:image" content="http://yourhost/img/share-thumbnail-2a7d7b5a4401ef3176565dffcd59b282.png" />
This uses Laravel's built-in URL generators so the URLs will be generated depending on your environment.
Contribute
In lieu of a formal styleguide, take care to maintain the existing coding style.
License
MIT License (c) The Monkeys
mobilefuse/cachebuster 适用场景与选型建议
mobilefuse/cachebuster 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.59k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 12 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「assets」 「cachebuster」 「cdn」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 mobilefuse/cachebuster 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mobilefuse/cachebuster 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 mobilefuse/cachebuster 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Asset Management for PHP
Prefixes asset urls with a unique hash which will allow invalidation of asset files cached by the browser.
Adds MD5 hashes to the URLs of your application's assets, so when they change, their URL changes.
Caching and compression for Twig assets (JavaScript and CSS).
Tool for loading or deploying CSS and JS files into web pages
统计信息
- 总下载量: 9.59k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-12-02