linux打包压缩命令gzip
打开linux客户端,如下图所示
点击连接linux按钮
输入用户名,主机ip地址
输入密码
连接成功,可以进行操作
输入gzip 1log,意思是将1log文件进行压缩,最后得到1loggz压缩文件
第一步,打开Internet信息服务(IIS)管理器,右击“网站”-》“属性”,进入“服务”选项,之后在“HTTP压缩”的大框中把“压缩应用程序文件”和“压缩静态文件”两个都选上,而“临时目录”和“临时目录的最大限制”直接使用默认值即可。
第 二步,还是在Internet信息服务(IIS)管理器中,右击“Web服务扩展”选项,选择“增加一个新的Web服务扩展”,在“新建Web服务扩展” 框内输入扩展名为“HTTP Compression”,“要求的文件”添加路径为C:\WINDOWS\system32\inetsrv\gzipdll,一般来说绝大多数 Windows2003服务器都应该是这个路径,如果有很特别的,就请根据自己的情况来选择gzipdll的位置吧,记得把“设置扩展状态为允许”也勾 选上,然后点击确定。
第 三步,来到关键的一步了。先将IIS60服务器停止,请在“运行”中输入“cmd”,进入命令行,然后输入“net stop iisadmin”来停止IIS服务,再备份一下C:\Windows\System32\inetsrv\MetaBasexml这个文件(在修改服 务器任何一个配置文件之前都应该备份,这是个人站长必备素质),之后用记事本打开该文件,进行相关设置的更改。
需 要更改的有两个地方,一个是Location ="/LM/W3SVC/Filters/Compression/deflate"的地方,另一个则是Location ="/LM/W3SVC/Filters/Compression/gzip",将这两个地方修改后就可以打开GZIP了。两个地方的内容更改完全一致, 所以只说一遍就可以了。
将HcDoDynamicCompression设置为“TRUE”,这个是用来压缩动态文件的,当然如果你不打算压缩动态文件,保持“FALSE”状态也可以,而HcscriptFileExtensions中是需要压缩的动态文件后缀,如asp、php、aspx等。
将HcDoStaticCompression和HcDoOnDemandCompression设置为“TRUE”,这是用来开启压缩静态文件的,没有理由不开启。在HcFileExtensions中添加需要压缩的静态文件后缀,如html、css、xml等。
HcDynamicCompressionLevel 和HcOnDemandCompLevel这两个属性,表示的是GZIP的压缩率,可以填写0-10之间的数字,默认为0,通常来说建议设置为9,这是最 具有性价比的选择。(中把php加到静态文件里面了,大家就无视吧,这是很久以前配置的,反正网站是静态的,php压缩不压缩无所谓)
修改完毕后,再把IIS服务器打开,依然在命令行中,输入“iisreset”命令。这样,GZIP压缩就打开了,可以用站长工具对自己的页面进行检查,看看效果如何。
需 要注意的是,在修改MetaBasexml文件时,可能会出现无法保存的情况,系统会提示“文件正在使用,无法保存”,要解决这个问题,打开IIS,右 击“本地计算机”-》“属性”,在“Internet信息服务”中勾选“允许直接编辑配置数据库”,确定后,就可以顺利的编辑MetaBasexml文 件了。
允许编辑配置数据库
在开启了GZIP后,网站打开速度会有较为明显的提升,而且也能节省不少的带宽和流量,带来的CPU资源消耗就无所谓了。也曾经有人担心搜索引擎对GZIP压缩的页面爬行有问题,事实证明完全不存在问题,只要是用户的浏览器可以正常访问的页面,搜索引擎爬行起来没有问题。
有许多情景当你的REST api提供的相应是非常长的,并且我们都知道传递速度和贷款在移动设备/网络上是多重要。当开发支持REST apis的移动app的时候,我认为首要的性能最优化的点就是需要解决。猜猜是什么?因为响应式文本,因此我们能压缩这些文本。而且随着当前的只能手机和平板的能力,在客户端解压文本应该不是个大问题因此在这篇文章中,如果你使用java的Jersey构建它,我将介绍你怎么能有选择性的压缩REST API响应,这个Jersey事JAX-RS的映射实现(还有更多)
1Jersey过滤器和拦截器
啊,感谢Jersey的强大的过滤器和拦截器特性,这个实现是相当容易的。然后过滤器是主要打算来维护像HTTP headers,URIs和/或HTTP methods的request和response的参数,拦截器是维护实体,通过维护实体的输入/输出流。
但是对于压缩将使用一个GZip WriterInterceptor,一个写拦截器被用于这种情况,在那个类里,实体被写到"wire",当在这种情况中时,它在服务器这边,这就意味着输出一个响应实体。
11GZip Writer Interceptor
那让我们来看看我们的GZip Writer Interceptor吧:
GZip Writer Interceptor
package orgcodingpediademorestinterceptors;
import javaioIOException;
import javaioOutputStream;
import javautilzipGZIPOutputStream;
import javaxwsrsWebApplicationException;
import javaxwsrscoreMultivaluedMap;
import javaxwsrsextWriterInterceptor;
import javaxwsrsextWriterInterceptorContext;
@Provider
@Compress
public class GZIPWriterInterceptor implements WriterInterceptor {
@Override
public void aroundWriteTo(WriterInterceptorContext context)
throws IOException, WebApplicationException {
MultivaluedMap<String,Object> headers = contextgetHeaders();
headersadd("Content-Encoding", "gzip");
final OutputStream outputStream = contextgetOutputStream();
contextsetOutputStream(new GZIPOutputStream(outputStream));
contextproceed();
}
}
注意:
它实现了WriterInterceptor,这是一个写拦截器的消息体的接口,这个接口包装调用javaxwsrsextMessageBodyWriterwriteTo
供应商实现WriterInterceptor协议必须要么以编程方式注册进一个JAX-RS运行环境,要么必须用@Provider注解来注解在一个提供商扫描语句期间自动的被JAX-RS运行环境发现。
@Compress是绑定注解的名称,在接下来的段落中我们将更详细的讨论它
“拦截器从WriterInterceptorContext中获得一个输出流并且设置一个新的用原始的GZIP包装器包装的输出流。在所有的拦截器被执行以后,输出流最终设置WriterInterceptorContext将用于序列化实体。在上面的例子中,实体字节将被写到GZIPOutputStream中,这个类将压缩流数据,然后把他们写到原始输出流。原始流总是把数据写到wire中。当拦截器被用在服务器上时,原始输出流会把数据写到底层服务器容器的流中,然后发送响应给客户端。”
“重载方法aroundWriteTo()获取WriterInterceptorContextz作为参数。这个上下文包括请求头参数getters和setters,请求属性,实体,实体流和其它属性;当你压缩你的响应时,你应当设置'Content-Encoding'头位gzip”
12 压缩注解
过滤器和拦截器能被绑定名字。名称绑定是一种概念,这种概念就是允许告诉一个JAX-RS的运行时,一个只为特定资源方法的特定的过滤器或者拦截器将被执行。当一个过滤器或者拦截器只对一些特定的资源方法限制,那我们就认为它是名称绑定。过滤器和拦截器没有这样的限制就被称作global。在我们的例子中我们已经构建了@Compress注解:
Compress annotation
package orgcodingpediademorestinterceptors;
import javalangannotationRetention;
import javalangannotationRetentionPolicy;
import javaxwsrsNameBinding;
//@Compress annotation is the name binding annotation
@NameBinding
@Retention(RetentionPolicyRUNTIME)
public @interface Compress {}
而且用它来标记在资源上的方法,这个方法应该是被压缩的(eg:当GET-ing的时候,所有的博客用PodcastsResource)
@Compress annotation在资源方法上的使用
@Component
@Path("/podcasts")
public class PodcastsResource {
@Autowired
private PodcastService podcastService;
/
READ
/
/
Returns all resources (podcasts) from the database
@return
@throws IOException
@throws JsonMappingException
@throws JsonGenerationException
@throws AppException
/
@GET
@Compress
@Produces({ MediaTypeAPPLICATION_JSON, MediaTypeAPPLICATION_XML })
public List<Podcast> getPodcasts(
@QueryParam("orderByInsertionDate") String orderByInsertionDate,
@QueryParam("numberDaysToLookBack") Integer numberDaysToLookBack)
throws IOException,AppException {
List<Podcast> podcasts = podcastServicegetPodcasts(
orderByInsertionDate, numberDaysToLookBack);
return podcasts;
}
}
2测试
21SOAPui
好了,如果你正在用SOAPui测试,你能使用下面的请求违反PodcastsResource
Reqest:
请求例子:
GET http://localhost:8888/demo-rest-jersey-spring/podcasts/orderByInsertionDate=DESC HTTP/11
Accept-Encoding: gzip,deflate
Accept: application/json, application/xml
Host: localhost:8888
Connection: Keep-Alive
User-Agent: Apache-HttpClient/411 (java 15)
Response:
被压缩的json响应,通过SOAPui自动的解压缩
HTTP/11 200 OK
Content-Type: application/json
Content-Encoding: gzip
Content-Length: 409
Server: Jetty(907v20131107)
[
{
"id": 2,
"title": "Quarks & Co - zum Mitnehmen",
"linkOnPodcastpedia": "http://wwwpodcastpediaorg/quarks",
"feed": "http://podcastwdrde/quarksxml",
"description": "Quarks & Co: Das Wissenschaftsmagazin",
"insertionDate": "2014-10-29T10:46:1300+0100"
},
{
"id": 1,
"title": "- The Naked Scientists Podcast - Stripping Down Science",
"linkOnPodcastpedia": "http://wwwpodcastpediaorg/podcasts/792/-The-Naked-Scientists-Podcast-Stripping-Down-Science",
"feed": "feed_placeholder",
"description": "The Naked Scientists flagship science show brings you a lighthearted look at the latest scientific breakthroughs, interviews with the world top scientists, answers to your science questions and science experiments to try at home",
"insertionDate": "2014-10-29T10:46:0200+0100"
}
]
SOAPui接受Content-type:gzip头,我们在GZIPWriterIntercepter中添加了并且自动的解压了响应并且用人眼可读的方式展示出来。
好了,就这些了。你已经了解了Jersey如何让它直接压缩REST api响应了。
市场上的新产品网站太多,因为工信部严查,服务器不得不暂时转移到香港,2M的国际宽带出口,太少,量大的会导致网站开不了,只有重新排版网站,减少数量,压缩大小,再在服务器上做GZIP压缩,在做GZIP压缩的过程中出现IIS服务启动不了的情况,折腾了我一天的时间,找了很多资料,整理一下我成功的例子,分享给需要的人:
第一种 解决办法:在Internet信息服务下有本地计算机(计算机机名),单击名键,选择断开,提示确实要断开本地计算机(计算机机名)吗?选择确定。 右键单击Internet,选择连接,计算机名填本机名称,用户名填本机管理员帐号(Administrator),确定。
第二种 “eventlog”服务,然后启动“WorldWideWebPublishing”服务。
第三种 先打开Administrative Tools --> Service,发现World Wide Web Publishing Service停止了。于是试图启动该服务,结果报错。 于是查看World Wide Web Publishing Services所需要依赖的服务(Dependencies),看到是IIS Admin Service。进而发现IIS Admin Service也无法启动,再查IIS Admin Service的Dependencies,查的结果是Protected Storage和RPC(Remote Procedure Call),于是启动RPC,接着顺利启动IIS Admin Service,接着启动World Wide Web Publishing Services,IIS恢复正常。
第四种 World Wide Web Publishing Service 服务启动不了,在"添加或删除程序"顶部选中"显示更新",然后删除939373的补丁。
完了后我的服务器还是启动不了,干脆重装一下iis,重装后再次做了GZIP,停止IIS后继续出现问题,郁闷了,难道是做GZIP的操作除了问题?试着恢复了MetaBasexml文件,再次启动IIS,ok,好了,搞了半天原来问题在这。
在GZIP中找出错误,问题解决,压缩也做好了。
gzip压缩可以压缩gif、jpg吗?
尽量不要使用gzip,因为gif,png等本身就是被压缩过的
SEO不会有影响只压缩htmlaspphpcssjsxml格式的文本文件就可以了
gzip压缩可以压缩gif、jpg吗?尽量不要使用gzip,因为gif,png等本身就是被压缩过的SEO不会有影响只压缩htmlaspphpcssjsxml格式的文本文件就可以了
如何启用网页GZIP压缩下面”舒宇卓创站长“将和大家一起分享一下,希望对咱们站长有所帮助!1开启网页GZIP压缩有什么好处Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。进而对于搜索引擎的收录也有一定的好处,也大大提高了我们的用户体验度。2如何启用IIS的Gzip压缩功能:首先要有网站管理权限和服务器远程管理权限
步骤如下:第一、如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃。打开Internet信息服务(IIS)管理器,右击“网站”—>“属性”(注意:这里的网站是整个网站文件不是某个网站目录),之后选择“服务”。在“HTTP压缩”框中选中“压缩应用程序文件”和“压缩静态文件”,按需要设置“临时目录”和“临时目录的最大限制”。第二、在Internet信息服务(IIS)管理器,右击“Web服务扩展”—>“增加一个新的Web服务扩展”,在“新建Web服务扩展”框中输入扩展名“HTTPCompression”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;这时候静态内容是可以压缩的,但是对于动态内容,aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方,这时候只能去修改它的配置文件了。第三、使用文本编辑器打开C:\Windows\System32\inetsrv\(建议先备份),查找IIsCompressionScheme标签,有三个相同名字的段,分别是deflate,gzip,Parameters,第三段不用管它,前两段有基本相同的参数,HcDynamicCompressionLevel,设置压缩率,取值0~10,0不压缩,10最高压缩率,这里设置成9,9是性价比最高的一个。HcFileExtensions,需要压缩的静态文件扩展名,默认只有htm,html,txt,可以把js,css,xml添加进去。建议按原来的格式,用换行作为分隔。
客户端开发过程中,难免会遇到向服务端提交大量数据的问题。为解决这个问题,优化客户端网络提交部分。于是就想到了压缩数据后再向服务端提交。
1、解决了同时大量数据上传服务器阻塞问题。
2、节省了流量。
方法:使用GZIP压缩。
第三方类:LFCGzipUtillity
method:
+ (NSData )gzipData:(NSData )pUncompressedData;压缩方法
+ (NSData )uncompressZippedData:(NSData )compressedData;解压方法
0条评论