[转]IIS7.5 添加expires头 提高性能

摘要:
我一直认为IIS无法做到这一点。它需要通过编程来管理。在谷歌上搜索没有结果。最后,我问了一些关于堆栈溢出的问题。很长一段时间没有人回答(),但终于有人回答了。当它写在httpd中时,当ExpiresActiveExpiresDefault“accessplus50hour”直接添加在conf之后,网站的所有页面、图片和其他内容都将正常工作。HTTP1.1引入了缓存控制,以解决过期标头需要客户端和服务器之间严格的时钟同步的问题。

本文转自:http://niutuku.com/tech/www/271454.shtml

对于页面中不经常变化的静态内容通过指定expires头,来进行浏览器端的缓存,减少每次访问时的请求。

 

原理:对于页面中不经常变化的静态内容通过指定expires头,来进行浏览器端的缓存,减少每次访问时的请求。

实现:

1、IIS下的实现参考

为静态文件(js,css,image)设置客户端缓存是前端优化的重要法则之一,通过IIS为静态文件设置过期头(Expires headers)很方便,

1.打开IIS管理器;

2.点击要设置的站点,在功能视图中双击HTTP响应标头image

3.然后点击image,打开对话框image

但是这样操作,web的整个站的所有的静态文件的缓存时间都一样,如果我们希望为不同的静态文件添加不同的缓存时间,比如有些文件很久不改变希望缓存时间长些,有些希望缓存时间短些。一直我以为IIS不可以做到,需要编程的方式管理,在google上搜索也无果,最后在stackoverflow提问(iis only Add Expires headers to images),很长时间没人回答(悲伤),不过最终还是有人解答了。

操作起来还是很简单,下面以添加某一个JS文件的缓存时间为例:

1. 在IIS管理器下点击该文件的文件夹并切换到内容视图

image

image

2. 选中要设置的js文件,如上图的jquery-1.3.2.js,右键切换到功能视图,这时看到的IIS管理台内容是

image

双击上图的HTTP响应标头就可以像为整个站点设置过期时间一样的操作。

上面的操作最终还是生成web.config的配置,经过上面的设置你会发现在Script文件夹下生成了一个web.config配置文件,打开发现内容如下

image

这样就明白了通过上面在IIS管理器的“繁琐”的界面操作可以通过简单的web.config中配置即可,

比如我要我整个Script文件夹设置统一的过期日期,只用添加一个location节即可

2、java的实现

mod_expires Apache 模块,具体还没研究如何用

win2000+apache2.0.54+tomcat5.0.28 现在想在某些目录上设置网页过期时间。 当写法是在httpd.conf的后面直接加 ExpiresActive  on ExpiresDefault  "access  plus  50  hour " 时,网站全部网页和图片等内容起作用。
当我想只配置某个特定的目录起作用时。写法改为: <Directory  "D:/Tomcat/webapps/ROOT ">       Options  Indexes  FollowSymLinks       AllowOverride  None       Order  allow,deny       Allow  from  all       ExpiresActive  on       ExpiresDefault  "access  plus  50  hour " < /Directory>

结论:

通过对指定不同的expires头来达到缓存查找的目的,如果静态内容有变化,可通过对应文件名称改变的方式来进行督促浏览器更新缓存。最好采用名称加版本号的方式对静态文件进行命名。

所针对的缓存对象为不经常改变的任何静态内容,不只是局限于图片,像css、js、flash都可以。

http1.1引入了cache-control来解决expires头需要客户端和服务器端时钟严格同步的问题。

cache-control通过max-age(以秒为单位)来指定多长时间以后过期。

-

免责声明:文章转载自《[转]IIS7.5 添加expires头 提高性能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇R语言入门:直方图histogram的绘制syslogng 消息过滤 寻找来源下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

21-CPU案例:如何提高LLC(最后一级缓存)的命中率

面两讲中,我介绍了性能优化的六大原则和十大策略。从今天开始,我们来通过具体案例的解决方案讲解,了解这些原则和策略是如何应用的。 首先,我们要来探讨的是一个CPU相关的性能优化案例。 这个性能案例,是关于CPU的最后一级缓存的。你应该知道,最后一级缓存(一般也就是L3),如果命中率不高的话,对系统性能会有极坏的影响(相关基础知识建议回顾第15讲)。所以对这一...

浏览器缓存

什么是缓存: 首先,什么是缓存?我的理解,缓存就是一个资源副本。当我们向服务器请求资源后,会根据情况将资源 copy 一份副本存在本地,以方便下次读取。它与本地存储 localStorage 、cookie 等不同,本地存储更多是数据记录,存储量较小,为了本地操作方便。而缓存更多是为了减少资源请求,多用于存储文件,存储量相对较大。 HTTP Cache H...

到底是什么原因导致我的进程崩溃?

当你你有1000个w3wp.exe文件在eventviewer中意外停止,或者您的进程以某种奇怪的未定义方式退出,您不知道原因。当一个进程崩溃或退出时,将触发一个称为EPR(Exit process)的特殊事件,因此使用类似于windbg.exe文件我们可以附加到进程中,等待epr被抛出,然后进行内存转储。安装windows调试工具时,会得到一个名为adp...

iOS图片加载框架-SDWebImage解读

在iOS的图片加载框架中,SDWebImage可谓是占据大半壁江山。它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。 SDWebImage 概论 1.提供了一个UIImageView的catego...

ehcache历史变迁及常用API的使用(转)

  ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松的Apache License V2.0作为授权方式,被广泛地用于Hibernate, Spring,Cocoon等其他开源系统...

nginx利用fastcgi_cache模块缓存

nginx不仅有个大家很熟悉的缓存代理后端内容的proxy_cache,还有个被很多人忽视的fastcgi_cache。proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。proxy_cache缓存减少了nginx与后端通信的...