首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP headers: Last-Modified -如何最小化服务器负载?

HTTP headers: Last-Modified -如何最小化服务器负载?
EN

Stack Overflow用户
提问于 2010-05-30 17:27:55
回答 2查看 441关注 0票数 5

想象一下下面的用例:

我使用一个AJAX请求来获取有关Item的一些信息,并使用这个URL:http://domain/items/show/1

在我的数据库中,所有项都有一个名为modified_at的字段,我们在其中存储该项之前被修改的时刻。

如果我们每次都需要在服务器端处理这个请求,那么响应中的Last-Modified服务器header如何能够最小化负载/减少请求/提高响应性?看起来我们没有减少响应的HTTP请求的数量,我们也没有减少服务器上的负载。

不管怎么说,谁需要这个呢?

我说的对吗,它主要用于节省带宽的目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-30 18:57:27

这样做的目的是节省带宽,不是在服务器上,而是在客户端。不可缓存的AJAX请求可能会使访问者的UI变得非常慢,而不必一次又一次地传输数据,从而极大地提高了客户端浏览器的性能。

如果你想减少请求的数量,你应该在响应上设置一个明确的Expires头。在Expires设置的时间用完之前,客户端不会请求资源。

票数 3
EN

Stack Overflow用户

发布于 2010-05-30 17:49:10

如果你的实现总是需要一个db查询,那么很可能实现304不会有多大的好处。您可能只保存呈现响应所需的资源。如果你的渲染需要大量的处理,即使你需要一个数据库查询,它仍然是值得的。

但是,如果您有一种将请求uri映射到过期日期而不使用数据库的机制,您可能会注意到在响应时间和节省的服务器资源方面有更大的改进。

我是如何实现类似的场景的,就是将每个请求缓存到磁盘。文件中的第一行(以不需要扫描的方式命名)包含元数据,如etagttl。根据文件的修改时间和存储在其中的ttl,我可以通过只从磁盘读取一行,来决定是应该发送304响应(返回客户端)、缓存文件的内容(新客户端,还是还没有看到最近渲染的返回客户端),还是应该正常处理请求,同时缓存刷新的结果。

有关实现304响应的详细信息,请参阅此问题。Is my implementation of HTTP Conditional Get answers in PHP is OK?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2938085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档