![]() |
1
1
对于etag,您可以使用任何值,但我更喜欢使用当前文件的md5_文件()sha1_文件()作为内容的唯一标识符(不应该有这么多冲突)。 在任何输出之前执行此操作。
或者,您可以让Apache在.htaccess中为您执行此操作(如果启用了它,通常是这样):
如果你想设定一个长的过期时间(尽管这有点危险),你也可以这样做:
但是要小心,您必须创建一个文件()的版本,每次更新该文件时都必须更改该版本。 |
![]() |
2
1
见:
基本上你想:
通过版本控制,我的意思是代替:
添加一些指示“版本”的内容,如文件的mtime:
将它与一个远未来的Expires头结合起来,这样浏览器将只请求该文件一次。然后,当您希望浏览器获得新副本时,您可以更改版本号。 imho这远远优于涉及ETags等的方法。 |
![]() |
3
0
Apache使用inode大小的时间戳作为etag,但是如果您有一个Web服务器集群,那么这就不起作用。在这种情况下,您可以使用URL大小时间戳的MD5。 More info in the Etag section here 我建议不要计算整个文件的MD5,因为这在大型文件(如图像、音频、视频)上可能很昂贵。 |
![]() |
4
0
为什么不直接使用Apache来服务静态请求呢? 它可以压缩东西,也可以正确地设置标题,猜猜看,它还可以处理边缘情况。 正确处理条件请求并不明显,我认为您不应该尝试这样做。使用已经运行的Web服务器。 也就是说,并非所有的违约都是合理的。如果您的站点有多个Web服务器,并且在不经常更改的内容上设置一个“expires”头,那么您可能应该禁用etag,如果您希望客户机的缓存最有用,那么这是非常必要的。 看看那些有点屈尊俯就的, http://developer.yahoo.com/performance/rules.html 这对你有帮助。 |
![]() |
Karlo · PHP Sqlite PDO最新版本 5 月前 |
![]() |
Malte · 检查远程服务器上是否存在文件(使用PHP)[关闭] 5 月前 |
![]() |
Bard.Mus · 迁移后的数据库字符集环境 5 月前 |