我用Google搜索但找不到任何HTML minifacation脚本。
对我而言,可能除了删除所有不需要的空格之外,HTML minifacation还有其他功能。
我错过了什么或者我的Google Fu丢失了吗?
答案 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文件夹中
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
答案 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 ( 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代码。
最好从正则表达式中创建一个数组,但要注意逃避反斜杠。
答案 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;容易出错的恕我直言。