我用谷歌搜索,但找不到任何 HTML minifacation 脚本。
我突然想到,HTML minifacation 没有什么比删除所有不需要的空格更重要的了。
是我遗漏了什么还是我的 Google Fu 丢失了?
从 HTML 中删除内容时必须小心,因为它是一种脆弱的语言。根据您的页面的编码方式,某些空白可能更重要;此外,如果您有 CSS 样式,white-space: pre
那么您可能需要保留空格。此外,还有许多浏览器错误等,基本上 HTML 文件中的每个字符都可能满足某些要求或安抚某些浏览器。
在我看来,你最好的选择是使用 CSS 技术很好地设计页面(我最近能够在我工作的网站上获取一个重要页面,只需使用 CSS 而不是表格和嵌套样式对其进行重新编码,就可以将其大小减少 50% ="..." 属性)。然后,使用 GZip 为支持 gzip 的浏览器减小页面大小。这将节省带宽,同时保留 html 的结构。
有时,根据封闭标签和/或 CSS,空格可能很重要。
在提到的其他答案中,除了 HTML Tidy/删除空格之外,没有太多。
这更像是一项手动任务,将样式属性提取到 CSS 中(希望您没有使用 FONT 标签等),尽可能使用更少的标签和属性(例如不在元素中嵌入 <strong> 标签,而是使用 CSS 来制作整个元素 font-weight: 粗体,除非当然使用 >strong<) 等在语义上有意义。
是的,我想这几乎是在删除空格和评论。您不能像在 javascript 中那样用较短的标识符替换标识符,因为 CSS 类或 javascript 可能会依赖于这些标识符。
此外,删除空格时应小心,并确保始终至少留下空格字符,否则您的所有文本将看起来像这样。
在这个 Wordpress 博客上有一个关于这个主题的相当长的讨论。您可以在那里找到使用 PHP 和 HTML Tidy 提出的非常冗长的解决方案。
我还没有尝试过,但是htmlcompressor是一个 HTML 压缩器,如果你想尝试一下的话。
如果您已经安装了 node.js 并且您是 windows 用户,您可以创建这个 .bat 它将缩小您文件夹中的所有 html 到 min 子文件夹中。
输出将在 min 文件夹中
npm install html-minifier -g
cd the_destination_folder
dir /b *.HTML > list1.txt
for /f "tokens=*" %%A in (list1.txt) do html-minifier --collapse-whitespace --remove-comments --remove-optional-tags %%~nxA -o min\%%~nxA
pause
JavaScript 不能用作压缩 HTML 字符串的解压缩器,例如,为未压缩格式构建 DEV,运行“发布”脚本以将 DEV 构建压缩到生产环境,并将 JavaScript 附加到 HTML 源代码(使用空格等像以前一样被删除)?
服务器上的带宽会减少,但缺点是将字符串解压缩为 HTML 的客户端压力更大。还需要启用 JavaScript 并能够将解压缩的字符串解析为 HTML。
我并不是说它是一个明确的解决方案,而是可能会起作用的东西——这完全取决于您是否在没有用户 JavaScript 权限/系统规范等的情况下查看带宽。
否则寻找混淆脚本,一个简单的谷歌搜索产生http://tinyurl.com/phpob - 取决于你在寻找什么应该有可用的软件包。
如果我在错误的路线上,请大声喊叫,我会看看我还能做些什么。
祝你好运!
我最近发现了一个基于 PHP 的脚本,可以缩小您的网站 HTML - Inline css - Inline javascript on the fly 它被称为 动态网站压缩器
这是一个用 PHP 编写的 HTML5 压缩器。
<?PHP
$in=file_get_contents('path/to/source.html');
//Strips spaces if there are more than one.
$in=preg_replace('/\s{2,}/m',' ',$in);
//trim
$in=preg_replace('/^\s+|\s+$/m','',$in);
/*Strips spaces between tags.
Use ( or ­ or better) padding or margin if necessary, otherwise the html
parser appends a one space textnode.*/
$in=preg_replace('/ ?> < ?/','><',$in);
//Removes tag end slash.
$in=preg_replace('@ ?/>@','>',$in);
//Removes HTML comments except conditional IE comments.
$in=preg_replace('/<!--[^\[]*?-->/','',$in);
//Removes quotes where possible.
$in=preg_replace('/="([^ \'"\=><]+)"/','=$1',$in);
$in=preg_replace("/='([^ '\"\=><]+)'/",'=$1',$in);
file_put_contents('path/to/min.html',$in);
?>
之后,您将拥有一行更短的 html 代码。
最好从正则表达式中创建一个数组,但要注意转义反斜杠。
我多年来一直使用这个正则表达式,没有任何问题:s/>\s*</></g
在 Python 中re.sub(r'>\s*<', '><', html)
或者在 PHP 中preg_replace('/>\s*</', '><', $html);
这删除了标签之间的所有空格,但不是任何地方,这是相当安全的(但并不完美,有些情况会破坏,但很少见)。
我这样做的主要原因不是速度/文件大小,而是因为空白通常会引入一个空间。这没关系,但是当您开始在 DOM 中使用 Javascript 时,经常会丢失空格,从而产生(较小的)布局差异。
考虑:
<div>
<a>link1</a>
<a>link2</a>
</div>
链接之间有一个空格,但现在我执行以下操作:
$('div').append('<a>link3</a>')
而且没有空间......我需要在我的 JS 中手动添加空间,恕我直言,这是相当丑陋且容易出错的。