我希望优化我的ASP页面。 Google最佳做法告诉我设置过期日期,修改日期和ETag等。
我明白了这一切的逻辑,但我不了解实施的细节,因为我们使用ASP页面,很难找到这些信息而且我没有#&# 39;有权直接在服务器上更改任何内容。
这会是我想要配置的信息类型吗?有什么?
<%
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>
ETag如何运作?我只是为网址决定一个数字还是必须有一些逻辑?
我们网站上的大多数网页都有每年只更改1或2的内容,然后是每天或每周更改的图像文件。
答案 0 :(得分:0)
304 Not Modified
。即。 Etags,您需要先为内容/页面位生成唯一ID,然后将其作为标题返回。然后浏览器会在下次尝试获取时添加该请求标头,但是如果在看到请求标头时没有返回正确的状态,那么它就不会完全实现。
在这种情况下,您可以执行以下操作:
eTag = "t153120141610"
If eTag = Request.ServerVariables("HTTP_ETAG") Then
Response.Status = "304 Not Modified"
Response.End
End If
Response.AddHeader "etag",eTag
Response.Write "Cache me next time via eTag: " & eTag
只需确保您生成一个唯一的ID,因为很容易返回已经存储在客户端浏览器中的具有相同eTag的其他内容。祝你好运。
制作自签名eTag的一种常用方法是首先识别将被缓存的所有类型的内容(即:论坛页面,帖子页面,个人资料页面),并且通常每个都有一个ID这些。然后使用md5或base64对其进行编码。 如果你想在客户端浏览器中保存1天,你可以这样做。
个人资料页面:
eTag = Base64Encode("Profile" & ProfileId & Date)
这意味着eTag每天都会更改,因此,它将被缓存1天,然后第二天将生成新的eTag并且旧的eTag将不再可识别。您还可以在数据库或文件中使用last modified date
字段,而不是使用Date,因此只有在内容更改时才会更改。
(注意:我没有使用etags,我使用Last-modified
和If-Modified-Since
标头代替浏览器端缓存,原因很明显。)