通过Nginx和SEO优化提供非过期内容

时间:2013-02-18 08:04:05

标签: django caching nginx seo

我在Webfaction中通过Apache和Nginx提供我的内容。 Webfaction仅为其Nginx服务器支持所有静态内容(图像,css文件,js等)的'epxires_max'指令。

我尝试了Google PageSpeed工具,它说:

  

以下可缓存资源的新鲜生命周期较短。   指定将来至少一周的到期时间   以下资源:

然后列出它认为需要指定过期的大约50张图片。

所以我的问题是:

(a)通过(Apache和)Nginx提供内容(不包括expires_max指令)并使用memcached,我是否需要为我的静态内容指定更多过期信息?

(b)除了'expires_max',我还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

如果您使用NGINX来提供所有静态内容,那么在服务器块中添加它应该可以解决问题:

location ~* \.(?:css|js|gif|jpe?g|png)$ {
    expires max;
    add_header Cache-Control public;
}

答案 1 :(得分:1)

基本上过期信息是通过使用http标头指定的,特别是ExpiresCache-Control,可能Etag`Last-Modified的某种组合。有关缓存如何工作以及标题含义的更多信息,请参阅http://www.mnot.net/cache_docs/

设置这些标头通常是您在网络服务器配置中执行的操作:

  • 对于Apache,您可以将必要的配置添加到主apache配置(如果您有访问权限),或通过.htaccess文件。您可以在.htaccess文件中添加哪些指令取决于在主配置中如何配置AllowOverride指令。
  • Nginx需要访问主服务器配置文件,没有类似.htaccess的机制(请参阅http://wiki.nginx.org/LikeApache-htaccess了解原因)

换句话说,您需要联系webfaction支持(如果它不在他们的常见问题解答中)并找出对您开放的选项:

  • 您可以自己在主配置中添加内容吗? (我从马特回答的评论中得不到)
  • 如果通过故障单请求,他们是否愿意将配置位添加到虚拟主机的配置中?
  • Apache的AllowOverride设置为什么?那么你能为自己设定什么? (参见上面链接的apache文档)