Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python压缩(最小化)HTML_Python_Html_Google App Engine - Fatal编程技术网

从python压缩(最小化)HTML

从python压缩(最小化)HTML,python,html,google-app-engine,Python,Html,Google App Engine,如何从python压缩(最小化)HTML;我知道我可以使用一些正则表达式来去除空格和其他东西,但我想要一个使用纯python的真正编译器(这样它就可以在Google App Engine上使用) 我在一个在线html压缩器上做了一个测试,它节省了65%的html大小。我想这样做,但是来自python。我想在GAE中没有必要缩小html,因为GAE已经gzip了 我并没有测试,但html的缩小版可能只会赢得1%的大小,因为它只会在压缩两个版本后删除空间 如果您想保存存储,例如通过memcached

如何从python压缩(最小化)HTML;我知道我可以使用一些正则表达式来去除空格和其他东西,但我想要一个使用纯python的真正编译器(这样它就可以在Google App Engine上使用)


我在一个在线html压缩器上做了一个测试,它节省了65%的html大小。我想这样做,但是来自python。

我想在GAE中没有必要缩小html,因为GAE已经gzip了

我并没有测试,但html的缩小版可能只会赢得1%的大小,因为它只会在压缩两个版本后删除空间


如果您想保存存储,例如通过memcached保存,那么您对gzip更感兴趣(即使在低压缩级别下)与在python中删除空间相比,在C语言中(而不是在纯python中)处理空间可能更小、更快。我编写了一个构建脚本,将我的模板复制到另一个目录中,然后我使用此技巧告诉我的应用程序在开发模式或生产中选择正确的模板:

DEV = os.environ['SERVER_SOFTWARE'].startswith('Development') and not PRODUCTION_MODE

TEMPLATE_DIR = 'templates/2012/head/' if DEV else 'templates/2012/output/'
无论它是否由Web服务器gzip处理,这并不是真正的问题,出于性能原因,您应该尽可能保存每个字节

如果您查看一些最大的网站,它们通常会编写无效的html来保存字节,例如,在html标记的id属性中省略双引号是很常见的,例如:

<!-- Invalid HTML -->
<div id=mydiv> ... </div>


<!-- Valid HTML -->
<div id="mydiv"> ... </div>
还有一些简单的python html缩小工具。我有数以百万计的html页面存储在我的数据库中,运行htmlmin,我能够将页面大小减少5%到50%。它们在完全缩小html时都没有达到最佳效果(即字体颜色可以减少到000),但这是一个好的开始。我有一个try/except块,它运行htmlmin,如果失败,html\u会更瘦,因为htmlmin似乎提供更好的压缩,但它不支持非ascii字符

示例代码:

import htmlmin
from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
try:
    html=htmlmin.minify(html, remove_comments=True, remove_empty_space=True)
except:
    html=html_slimmer( html.strip().replace('\n',' ').replace('\t',' ').replace('\r',' ')  )

祝你好运

您可以使用htmlmin缩小html:

import htmlmin

html = """
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Case</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body> 
<div class="container">
  <h2>Well</h2>
  <div class="well">Basic Well</div>
</div>
</body>
</html>
"""

minified = htmlmin.minify(html.decode("utf-8"), remove_empty_space=True)
print(minified)
导入htmlmin
html=”“”
引导盒
嗯
基本井
"""
minified=htmlmin.minify(html.decode(“utf-8”),remove\u empty\u space=True)
打印(缩小)

谢谢你给我指出这一点。我在日志中看到一些浏览器还不支持gzip;但是再看看日志,我收到的请求并不是很多。删除65%的原始HTML可能不会在压缩时节省65%,但是它仍然可以保存一些东西。另外,不要忘记,有时候html存储在memcache上,你公然想在
htmlmin
比像
BeautifulSoup
这样的成熟解析器慢得令人难以置信之前对它进行压缩,以至于它毫无价值,是有害的。
import htmlmin

html = """
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Case</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body> 
<div class="container">
  <h2>Well</h2>
  <div class="well">Basic Well</div>
</div>
</body>
</html>
"""

minified = htmlmin.minify(html.decode("utf-8"), remove_empty_space=True)
print(minified)
import htmlmin

code='''<body>
    Hello World
    <div style='color:red;'>Hi</div>
    </body>
'''

htmlmin.minify(code)

<body> Hello World <div style=color:red;>Hi</div> </body> 
htmlmin.minify(code,remove_empty_space=True)