我读过,最好从无cookie的域或子域中提供静态内容(css,javascript等),以获得更好的性能。我假设默认情况下域不是非cookie的。如何指定我不想使用Cookie?
我读过,最好从无cookie的域或子域中提供静态内容(css,javascript等),以获得更好的性能。我假设默认情况下域不是非cookie的。如何指定我不想使用Cookie?
Answers:
当类似YSlow和Page Speed的内容告诉您设置无cookie的域时,它们的实际含义是从您将不会设置任何域或过去(全局)未设置任何域的域中提供媒体。有时,这可以通过使用子域名,如来实现media.domain.com
,或者static.domain.com
,但是如果你设置一个cookie domain.com
适用于域作为一个整体-一个cookie的*.domain.com
-那么这个cookie将被客户端回服务器上发送与相关的每个域的每个请求domain.com
。这包括所有子域。
如果您决定放弃在www.
域中使用,则全局cookie将成为一个问题。如果没有用于为其设置Cookie的特定子域,则必须设置所有Cookie *.domain.com
才能使它们起作用。
这个全球性的Cookie问题就是为什么您会看到从ytimg.com
YouTube之类的地方投放的静态媒体的原因。ytimg.com
将永远不会提供可设置cookie的动态内容,这意味着当这些域是HTTP请求的一部分时,不会将任何cookie从客户端发送回服务器。
如果您确定永远不会设置Cookie,*.domain.com
则可以根据需要使用子域。请注意,大多数时候,如果您通过Javascript与其他站点或服务集成,它们将设置全局域cookie。
在Apache(而且我确信所有其他Web服务器)中,可以在响应请求之前设置或取消设置标头。这不会解决客户端将Cookie发送到您的服务器的问题,但可以防止您的域发送或初始设置Cookie。如果您提供的内容来自无cookie的域中的内容不是静态的,那么这是一个问题,这违背了它们的目的。
Header unset Cookie
Header unset Set-Cookie
这将取消设置现有Cookie和创建新Cookie的标题。同样,如果您从静态域中投放可能设置Cookie的内容,这只是一个问题。将其放置在站点或虚拟主机的配置中(取决于您的操作系统,服务器和版本,可以是任意数量的位置)。
如何指定我不想使用Cookie?
这不是你需要做的,有一个cookie的域是什么-它更多的是,你需要什么不能做......有你必须确保在该域上运行的应用程序中的cookie的域不设置任何cookie。这通常意味着没有登录名,没有Google Analytics(分析),没有会话-即仅提供媒体服务而没有其他服务。显然,这取决于您的设置。
我最近犯的一个错误是,我没有在域和子域之间进行区分。我从服务所有媒体开始,就http://media.example.com
以为它是一个无cookie的域,但实际上它是一个子域,我从主站点http://www.example.com
那里发现了很多cookie,这些主站点都设置在域级别,因此污染了我应该是无cookie的子域。这是我如何解决此问题的链接:https : //serverfault.com/questions/160210/nginx-serve-static-content-from-a-cookieless-domain
www.example.net
不会发送到static.example.net
,而的Cookie example.net
将会发送到。解决的办法是重定向example.net
到www.example.net
。
如何指定我不想使用Cookie?
您不必指定不想使用cookie,而只是不使用它们。