kra*_*cek 4 apache caching fingerprinting
我想优化我们网站中使用的静态资源(.js、.css、...文件)的缓存。我的目标基于这篇文章(https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#invalidating-and-updating-cached-responses)。
简而言之 - 因为这些静态资产往往会临时更新(有时每周一次,有时每天两次,...),我想在遥远的未来到期时缓存它们,并根据内容或修改日期为它们提供唯一的名称或类似的。这应该允许将它们缓存很长时间,但一旦发生某些更改就更新它们。
Apache2 服务器支持这项技术吗?或者是否有一些中间件系统可以处理指纹生成(具有唯一的资产名称)并更新 HTML 文件中对它们的引用(根本不会被缓存)?
我们在主机上使用 LAMP 堆栈。
先感谢您
您可以为 Apache 启用mod_mime,mod_expires并使用以下代码片段
<FilesMatch "\.(png|jp?g|gif|ico|mp4|wmv|mov|mpeg|css|map|woff?|eot|svg|ttf|js|json|pdf|csv)">
ExpiresActive on
ExpiresDefault "access plus 2 weeks"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
或者设置相应的php标题
session_cache_limiter('none');
header('Cache-control: max-age='.(60*60*24*7)); //one week
header('Expires: '.gmdate(DATE_RFC1123,time()+60*60*24*365)); //one week
Run Code Online (Sandbox Code Playgroud)
这里还有相关文章:How to get the browser to cache images, with php?
有多种技术,其中一些技术比其他技术更好。一个好的配置是具有以下配置:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1.$3 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这允许使用以下形式的 URL /i/filename.1433499948.gif- 但实际从磁盘读取的文件只是/i/filename.gif文件名的第 1 部分和第 3 部分。
此 Apache vhost/.htaccess 节来自H5BP filename-based_cache_busting.conf文件,存储库中还有其他良好实践示例。
这与 H5BP mod_expires配置相结合,意味着您始终能够轻松地更新用户本地浏览器缓存,只需通过新名称更新对文件的引用即可。
| 归档时间: |
|
| 查看次数: |
15709 次 |
| 最近记录: |