后退 刷新 前进 收藏 顶部 |   知道 黑匣子 富媒体 技术服务

加速你的网站,启用内容过期,IIS ADN NGINX

服务器应用 windows ... (shuke.2013-10-16 10:01)
由于网站项目经常出现访问慢,查看后,发现网站的图片与内容很多,又是全部生成的静态文件。
不得不使用服务器缓存方案。
当用户第一次访问你的网站,浏览器从你的网站主机下载内容,如果用户第二次访问你的网站,浏览器从缓存读取内容。

iis启用内容过期
第一,网站右键属性=》HTTP头 =》启用内容过期(最好设置成4个小时,如果你不常常更新网站的话!常常更新的话就10分钟吧!)
如果你的网站不是每分每秒都在更新的话,我建议你开启内容过期。为什么这样说,比如你设置的内容过期时间是2个小时,那么在这2个小时内你网站没有更新的话,用户是没有必要从你的网站主机读取网页的,只需要从浏览器的缓存读取网页就行了。这不仅仅意味着网站主机的压力减小了,更重要的是网站的访问速度让用户更满意。这无论对站长还是用户而言都是有很大好处的。

  现在,请跟着我来为你的网站开启“内容过期”,这是一个IIS6的例子。

  双击你的“Internet 信息服务(IIS)管理器”,在左侧右击你要启用“内容过期”的网站,选择“属性”,在出现的网站属性对话框上面单击“HTTP 头”标签,勾选“启用内容过期”,在下面的“此时间段后过期”部分,指定过期时间,这就取决于你的个人情况了,一般设置为2个小时以上,大家也可参考大网 站的设置。

  然后点“确定”就ok了,很简单的。请看图

  

 

  这就为你的网站启用了内容过期,如果你没有看到效果,或者你需要重启IIS,可以用“iisreset”这个命令来执行重启的操作。



Nginx缓存过期管理小结
先看一个经典的配置,注意红色部分:

proxy_cache_path /cache levels=1:2 keys_zone=cache_pool:512minactive=1m max_size=10g;

location ~ .*\.(jpg|gif|png)$
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_pool;
proxy_cache_valid 200 304 2m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://storage1;
expires 10m;
}

 
我在Chinaunix论坛上看到有人问过,说这三个时间(上面红字显示的),到底是什么意思,他们有什么用处?先看官网的解释:

Cached data that are not accessed during the time specified by the inactive parameter get removed from the cache regardless of their freshness. By default,inactive is set to 10 minutes.
(被缓存的数据如果在inactive参数指定的时间内未被访问,就会被从缓存中移除,不论它是否是刚产生的。inactive的默认值是10分钟)
 
Sets caching time for different response codes. For example, the following directives
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
set 10 minutes of caching for responses with codes 200 and 302, and 1 minute for responses with code 404.

expires: Controls whether the response should be marked with an expiry time, and if so, what time that is.
 
这里总结下:
inactive的时间表示一个文件在指定时间内没有被访问过,就从存储系统中移除,不管你proxy_cache_valid里设置的时间是多少。而proxy_cache_valid在保证inactive时间内被访问过的前提下,最长的可用时间。proxy_cache_valid定义的其实是一个绝对过期时间(第一次缓存的时间+配置的缓存时间),到了这个点,对象就被认为是过期,然后去后端重取数据,尽管它被访问的很频繁(即所谓的inactive时间内)。expires呢,它不在这个过期控制体系内,它用在发给客户端的响应中,添加"Expires"头。关于expires指令的具体用法,可以参考官方wiki。
2 楼 shuke[2013-11-03 17:25]
在LINUX服务器下发现LNMP关于缓存是这样子的
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires 30d;
                        }

location ~ .*\.(js|css)?$
                        {
                                expires 12h;
                        }
把代码直接应用于WNMP下时,是不会起作用的。看了PHP文件的代码,现改成
#power by shuke this is memcache set
location ~ ^(.+\.php)(.*)$ {
root F:/wwwhost/baidu.029yg.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME F:/wwwhost/baidu.029yg.com$fastcgi_script_name;
include fastcgi_params;
}
location ~ ^(.+\.gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires 30d;
                        }

location ~ ^(.+\.js|css)?$
                        {
                                expires 12h;
                        }
                        #memcache over
测试后,发现竟然可以执行;原来还是有很多的不同啊,貌似是LIUX与WINDOWS下通配符表达是不一样的!
发现缓存在会出问题,再次修复
location ~ .^\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}


进度:100% 返回服务器应用

IIS启动GZIP进行对网站压缩时,无法编辑metabase.xml的解决办法.(舒克)

图片新热点

导航


目录


    站内搜索
    首页 | W3C | ME