似乎couchdb在请求时使用正确的标头自动压缩其所有_attachments.但遗憾的是,视图,节目或列表不会发生这种情况.
在将结果返回给客户端之前有没有办法实现压缩?
使用像deflatejs这样的第三方库(还没有测试它)是一种糟糕的方法吗?
谢谢
抱歉这个含糊不清的问题......但我不太确定问题是什么。我有一个节点 http 服务器,用于将 JSON 数据提供给 Web 应用程序。它工作得很好,但我的 JSON 字符串开始变大(10-12 MB),所以我想用 zlib 添加压缩。
JSON 数据在一个字符串变量中,我想压缩然后写入响应对象......但返回到客户端的结果似乎总是具有完美的标头,并且没有内容。这是我的 deliveryResponse 函数:
var deliverResult = function (data, response, callback, acceptEncoding){
var payload = callback + '(' + JSON.stringify(data) + ');';
if (acceptEncoding.match(/\bdeflate\b/)) {
response.writeHead(200, { 'Content-Encoding': 'deflate', 'Content-Type': 'text/javascript; charset=UTF-8' });
zlib.deflate(payload, function(err, result){
if(!err){
//console.log(result.toString('utf8')); // I have data on the console here
response.write(result.toString('utf8')); // No data sent here
}
});
} else if (acceptEncoding.match(/\bgzip\b/)) {
response.writeHead(200, { 'Content-Encoding': 'gzip', 'Content-Type': 'text/javascript; charset=UTF-8' });
zlib.gzip(payload, …Run Code Online (Sandbox Code Playgroud) 有人说要启用压缩,您可以修改htaccess文件:
其他人说你需要更新httpd.conf文件
正确的方法是什么?如果任何一个都正确,那么htaccess不需要重新启动Web服务器,不是更好的选择吗?
我一直在这几个小时..
我做的第一件事是按照本教程进行操作,其中包含以下代码:
var express = require('express');
var app = express();
// New call to compress content
app.use(express.compress());
app.use(express.static(__dirname + '/public'));
app.listen(3333);
Run Code Online (Sandbox Code Playgroud)
自然代码已经过时了..我收到了这个错误:
Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
Run Code Online (Sandbox Code Playgroud)
所以我将代码更新为:
var express = require('express');
var app = express();
var compression = require('compression')
app.use(compression());
app.use(express.static(__dirname + '/_public' ));
app.listen(3333);
Run Code Online (Sandbox Code Playgroud)
效果很好..但我没有看到压缩的证据(我怎么知道?通过查看 chrome 开发工具响应标头:

它没有content-encoding教程中的 gzip标头:

所以尝试改用zlib库:
var express = require('express');
var app = express(); …Run Code Online (Sandbox Code Playgroud) 所以这是一个奇怪的问题,我真的在这里寻找一些最佳实践和潜在的解决方案.
背景:
我正在研究一个非常重要的企业应用程序.这是一个单页应用程序,除了初始加载,应用程序中没有完整的页面加载.几乎所有服务事务都返回JSON.
该应用程序生成大型数据集,其中一些可以超过1到2 MB未压缩.这显然是不可取的,但鉴于我们的应用程序的复杂性和它的作用,它也不是我们可以很容易地以实质性方式改变的东西.因此,我们在IIS中为JSON和XML启用了动态压缩,在500K未压缩的JSON包中有效地将我们降低到大约47K.
(让IIS动态压缩JSON和XML本身就是一件苦差事,所以如果有人需要提示,我很乐意帮忙.)
问题状态:
我们很高兴能够缩小我们的数据集,但是我们已经注意到IE11似乎与在AJAX响应对象中返回的压缩数据相比较差.基本上发生的是,当IE解压缩从AJAX请求返回的GZipped数据时,UI层中存在可见的暂停.它并不实质(1.5秒),但它非常引人注目.我们测试的其他浏览器都没有受到此影响; Chrome,Safari,FireFox,Opera ...都会解压缩并处理此压缩数据,而UI中没有任何可见的暂停.所以,这似乎是IE迷人的怪癖之一.
尝试的解决方案:
我们试图通过优化对象大小以及调整压缩级别来减少这种情况.其中,减少起始对象大小是唯一成功减少渲染延迟的因素; 压缩级别似乎很少或根本没有.但正如我所说,我们已经达到了我们可以做的优化数据大小的外部限制.
我需要的:
理想情况下,有人在那里遇到了同样的问题,并且可以提供有关我们如何解决IE11问题的建议.或者,如果有人能够深入了解IE如何处理gZipped响应,以及为什么这种差异可以归结为完全停止浏览器UI中发生的任何事情,我会很高兴.
我远不是一名IIS专家,所以说话慢,用小词;-)
我正在尝试在 Springboot Rest API 中实现 Gzip 响应压缩
我在 application.properties 中使用以下配置
# Enable response compression
server.compression.enabled=true
# The comma-separated list of mime types that should be compressed
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
# Compress the response only if the response size is at least 10KB
server.compression.min-response-size=10240
Run Code Online (Sandbox Code Playgroud)
响应压缩正在发生,但奇怪的是它也压缩了大小低至 1KB 或 500B 的响应,它不应该像 server.compression.min-response-size=10240
我们可以使用net.TCP绑定在WCF中实现GZip,或者只能使用Http和WsHttp绑定进行配置.
我使用小胡子/车把模板。
例如:
<script id="contact-detail-template" type="text/html">
<div>... content to be compressed </div>
</script>
Run Code Online (Sandbox Code Playgroud)
我希望在模板中压缩/缩小我的 HTML 文件以获得最佳压缩效果。
YUIcompressor,关闭不起作用,因为他们认为它是脚本并给我脚本错误。
即使 HTMLCompressor 认为它是一个脚本,它也不会触及它们。
如何使用 text/html 类型缩小脚本标签中的内容?我可以使用图书馆吗?如果没有,sed 或 egrep 是更好的方法吗?您是否有 sed/egrep 语法来删除空行(只有空格或制表符)、删除所有制表符、修剪多余的空格?
谢谢。
我使用WebPageTest来测试Azure Web App的性能(ASP.Net vNext Web API/Angular).我得到了"压缩传输"和"缓存静态内容"的F.
在搜索StackOverflow和Google之后,我在web.config中添加了以下内容:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/x-javascript"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/atom+xml;charset=utf-8"/>
</dynamicTypes>
<staticTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/xaml+xml"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
</staticTypes>
</httpCompression>
Run Code Online (Sandbox Code Playgroud)
和
<staticContent>
<!-- Set expire headers to 30 …Run Code Online (Sandbox Code Playgroud) 我的 angular2 项目为我的 web 应用程序构建了预压缩的 gzip 文件,但我的 IIS 只提供普通的“.js”文件而不是压缩的“.gzip”文件。我的浏览器愿意接受 gzip。
IIS 允许 gzip 响应的正确设置是什么?
我已经搜索了 google/SO/SU,但只找到了非“预压缩”内容的解决方案。
http-compression ×10
gzip ×7
compression ×2
deflate ×2
iis ×2
node.js ×2
ajax ×1
angular ×1
apache ×1
asp.net-mvc ×1
azure ×1
couchdb ×1
express ×1
http-caching ×1
javascript ×1
mustache ×1
net.tcp ×1
performance ×1
rest ×1
sed ×1
spring ×1
spring-boot ×1
wcf ×1
zlib ×1