sankalp_sans/slim-goes-slimmer

用于最小化 PHP 中 Slim 框架的 HTML 输出

v0.4 2024-03-18 14:43 UTC

This package is not auto-updated.

Last update: 2024-09-21 09:25:20 UTC


README

发布于 2015.11.27,更新于 2024.03.18(移除 HTML 注释)

嵌入 JS 或复杂分部层次结构的 HTML 页面使用缩进来提高可读性和良好的开发者体验。这导致网站源代码看起来像这样

<html>
  <body>
    <div>
      <div>
        <span>
          <ul>
            <li>un
              <a>
                Some content here
              </a>
            </li>
            <li>
              <a>
                Some other here
              </a>
            </li>
            <li>
              <a>
                Still another content here
              </a>
            </li>
          </ul>
        </span>
      </div>
    </div>
    <script>
      function someAwesomeFunction() {
        // This function does something
        for() {
          if() {
           // Some code here
          } else {
           // Some more code here
          }
        }
      }
    </script>
  </body>
</html>

我在几个流行的媒体网站上进行了初步基准测试,发现我们浪费了 20% 到 30% 的 HTML 带宽在缩进 HTML 和 JavaScript 上。因此,我决定解决这个问题,并首先在 Slim 框架中实施,因为这正是我现在正在使用的框架。

到目前为止,slim-goes-slimmer 将上述 HTML 削减为

<html>
<body>
<div>
<div>
<span>
<ul>
<li>
<a>
Some content here
</a>
</li>
<li>
<a>
Some other here
</a>
</li>
<li>
<a>
Still another content here
</a>
</li>
</ul>
</span>
</div>
</div>
<script>
function someAwesomeFunction() {
// This function does something
for() {
if() {
// Some code here
} else {
// Some more code here
}
}
}
</script>
</body>
</html>

... 因此从每一行的开头删除了空格

为什么我没有进一步“优化”它?

主要是因为我在 HTML 中遇到 base64 编码图像的奇怪问题

使用

  • 只需使用 composer require sankalp_sans/slim-goes-slimmer 或将文件 SlimGoesSlimmer.php 复制到相关路径并包含它。
  • 使用以下方法将其注册到 Slim 应用对象中
$app = new \Slim\Slim(...));
$app->add(new \Slim\Middleware\SlimGoesSlimmer());

灵感

这个项目是受我之前贡献的一个项目启发的 https://github.com/christianklisch/slim-minify。我原本打算进一步贡献,但由于 slim-goes-slimmer 专门针对我的一组问题,我将在我的 PHP 项目中根据需要对其进行调整。

目前的结果

令人鼓舞。根据 100 页的样本,我已经观察到页面大小减少了约 25%,这些页面的列表我很快就会发布。

贡献

贡献非常简单。Fork,代码,推送并发起拉取请求。如果您能贡献测试用例,我会很高兴,因为我通常很糟糕,无法编写它们。