我一直在将呈现的页面缓存到redis缓存中,并将它们作为快速缓存提供给未登录的用户。大多数页面的页面大小约为100kb。通过在将其插入redis之前缩小html,我能够减小20kb的大小,但似乎这个过程打破了页面上的任何内联javascript。
目前使用以下PHP函数执行缩小。我当然不得不禁用它,但它似乎做得很好,只需要更加厌倦了javascript。
function MinifyHtml($html)
{
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s', // shorten multiple whitespace sequences
'/<!--(.|\s)*?-->/' // Remove HTML comments
);
$replace = array('>','<','\\1','');
$buffer = preg_replace($search, $replace, $html);
return $buffer;
}
答案 0 :(得分:0)
我使用PHP函数来缩小HTML和JavaScript,可以在这里找到扩展: https://gist.github.com/tovic/d7b310dea3b33e4732c0
答案 1 :(得分:0)
使用可以处理内联 javascript 的预构建 HTML 缩小工具,请参阅 HTMLdoc on GitHub。
您还使用了缓存,因此不会浪费任何 CPU 周期,因为您正在缓存输出。正如 ceejayoz 所建议的那样,对输出进行 Gzip 压缩将获得更好的压缩效果,并且比缩小花费更少的 CPU 时间,您将从 gzip 中获得约 70% 的压缩,但从缩小中仅获得约 15%。合并和缩小将使您获得额外约 10% 的 gzip 大小。
建议您存储 Gzip 和非 Gzip 版本,并根据 Vary
标头直接从缓存中提供它们。