缩小HTML

时间:2009-01-21 18:31:23

标签: html minify

我用Google搜索但找不到任何HTML minifacation脚本。

对我而言,可能除了删除所有不需要的空格之外,HTML minifacation还有其他功能。

我错过了什么或者我的Google Fu丢失了吗?

12 个答案:

答案 0 :(得分:26)

从HTML中删除内容时必须小心,因为它是一种易碎的语言。根据您的页面编码方式,一些空白可能更重要;如果您有white-space: pre等CSS样式,那么您可能需要保留空白。此外还有许多浏览器错误等,基本上HTML文件中的每个字符都可能满足某些要求或安抚某些浏览器。

在我看来,你最好的选择是使用CSS技术很好地设计页面(我最近能够在我工作的网站上获取一个重要的页面,并通过使用CSS而不是表格重新编码来缩小它的大小50%和嵌套的style =“...”属性)。然后,使用GZip减少了解gzip的浏览器的页面大小。这将节省带宽,同时保留html的结构。

答案 1 :(得分:7)

有时,根据封闭的标签和/或CSS,空格可能很重要。

答案 2 :(得分:1)

您可以在HTML整洁和其他内容中找到一些好的参考here

如果您不想使用其中一个选项,Prototype可以在DOM中使用clean the whitespace。您可以自己执行此操作,并通过Firefox扩展Web开发人员工具栏中的“查看生成的源”进行复制。然后你可以用原型的修复替换原来的html。很抱歉没有那么明显的昵称。

(我推荐第一个链接)

答案 3 :(得分:1)

是的,我猜它几乎删除了空白和评论。你不能用javascript中较短的标识符替换标识符,因为很可能CSS类或javascript将依赖于这些标识符。

此外,删除空格时应该小心,并确保始终至少留有空格字符,否则请将其添加到其中。

答案 4 :(得分:1)

有关此主题的this Wordpress blog讨论非常冗长。您可以在那里使用PHP和HTML Tidy找到一个非常冗长的建议解决方案。

答案 5 :(得分:1)

在HTML之外整理/删除空白区域,如其他答案所提到的那样,并不多。

这更像是一个手动任务,将样式属性提取到CSS中(希望你没有使用FONT标签等),尽可能使用较少的标签和属性(比如不在元素中嵌入< strong>标签但是使用CSS制作整个元素font-weight:bold,除非它使用> strong<)等语义有意义。

答案 6 :(得分:1)

我还没有尝试过,但htmlcompressor是一个HTML缩小器,如果你想尝试一下。

答案 7 :(得分:1)

如果您已经安装了node.js并且您是Windows用户,则可以创建此.bat 它将最小化min子文件夹中文件夹中的所有html。

输出将在min文件夹中

  1. 打开控制台。运行-> npm install html-minifier -g
  2. 创建.bat。不要忘记在cd命令中更改路由。在bat文件中更改文件夹比复制和粘贴容易。
  3. 在控制台中进入.bat文件夹并运行它。

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

答案 8 :(得分:0)

无法将JavaScript用作压缩HTML字符串的解压缩程序,例如具有针对未压缩格式的DEV构建,运行“发布”脚本以将DEV构建压缩为生产并将JavaScript附加到HTML源(用空格和之前删除的那样)?

服务器上的带宽会减少,但缺点是将字符串解压缩为HTML会有很多客户端压力。此外,还需要启用JavaScript,并能够将解压缩的字符串解析为HTML。

我并不是说它是一个明确的解决方案,而是可能有用的东西 - 这一切都取决于你是否在没有用户JavaScript权限/系统规范的情况下考虑带宽等等。

否则查找混淆脚本,生成http://tinyurl.com/phpob的简单谷歌搜索 - 取决于您所寻找的应该有可用的软件包。

如果我出错了,请大声喊叫,我会看到我还能做些什么。

祝你好运!

答案 9 :(得分:0)

我最近发现了一个基于PHP的脚本,可以缩小你的网站HTML - 内联css - 动态内联javascript它被称为 Dynamic website compressor

答案 10 :(得分:0)

这是用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 (&nbsp; or &shy; 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代码。

最好从正则表达式中创建一个数组,但要注意逃避反斜杠。

答案 11 :(得分:0)

我已经使用这个regexp多年了,没有任何问题:s/>\s*</></g

在Python re.sub(r'>\s*<', '><', html)

或在PHP preg_replace('/>\s*</', '><', $html);

这删除了标签之间的所有空格,但不是在任何地方,这是相当安全的(但不完美,有些情况会破坏,但它们很少见。)

我这样做的主要原因不是速度/文件大小,而是因为空白通常会引入一个好的空间。这没关系,但是当你用Javascript开始在你的DOM中捣乱时,空间经常会丢失,从而产生(次要的)布局差异。

考虑:

<div>
    <a>link1</a>
    <a>link2</a>
</div>

链接之间有一个空格,但现在我做了类似的事情:

$('div').append('<a>link3</a>')

并且没有空间......我需要在我的JS中手动添加空间,这是相当丑陋的&amp;容易出错的恕我直言。