当前位置: 首页 > 知识库问答 >
问题:

AEM Dispatcher(4.3.3)始终返回200而不是304(Apache 2.4.6)

蒯卓君
2023-03-14

我已经在我的AEM服务器上配置了ETag(使用ACS Commons ETag支持),并在Apache上禁用了ETag。但是一旦文件被缓存在调度程序上,Apache总是返回200和响应体,而不是304没有修改。我已经验证了ETag值存储在。h”文件,并且在响应中与请求的“如果不匹配”报头的值相同。如果我从调度程序中删除缓存的文件并重新发送请求,那么AEM会正确地返回304。

我还禁用了mod_deflate,因为我在某些地方发现通缩的“-gzip”后缀可能会导致ETag匹配出现问题。

此外,我还尝试了类似的方法来代替ETag,使用Last Modified和If Modified-Since标头。但这也没什么好运气。我注意到,在大多数情况下,我们通常都有Last Modified标头,但我从未见过304。因此,这似乎不是特定于版本的问题。我找不到任何与此相关的配置文档。有人能告诉我哪里出错了吗?

共有2个答案

柳志专
2023-03-14

我们不使用Etags,因为很难在集群中同步它们,并且Last Modified工作正常。

# turn off Etags completely, since they will differ across the cluster
FileETag None

# FileETag None is not enough for every server.
Header unset ETag

# instead we use Expires and Cache-Control headers
ExpiresActive On

# set Expires default to 15 minutes, so browser caches for a visit
ExpiresDefault  "access plus 15 minutes"
# but a maybe few types are exempt from this
ExpiresByType text/cache-manifest   "access plus 0 seconds"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml  "access plus 0 seconds"
ExpiresByType application/xml   "access plus 0 seconds"
ExpiresByType application/json  "access plus 0 seconds"
# set CacheControl public header
# so content is cached in Firefox, even over https
# "public" keyword MUST be the first value in the header, or it will not work in FF
Header onsuccess edit Cache-Control "^(.*)$" "public, $1"

您可以根据您的内容相应地调整超时。

陈淳
2023-03-14

查看此 https://issues.apache.org/bugzilla/show_bug.cgi?id=45023

我已经启用了放气

RequestHeader edit "If-None-Match" "^\"(.*)-gzip\"$" "\"$1\""

Header edit "ETag" "^\"(.*[^g][^z][^i][^p])\"$" "\"$1-gzip\""
 类似资料:
  • Google App engine总是为url/test.js生成200,test.js不是静态资源,而是动态生成内容的url模式。内容将在N小时后过期,并生成一个新鲜内容。 我已经尝试了最后修改,ETag和cache-control。似乎都不起作用。

  • 我有一个名为Backend(端口:9090)的服务,位于Zuul(端口:8080)后面。 浏览器在Zuul上调用GET方法,执行重定向。 示例调用:http://localhost:8080/testredirect 结果: 浏览器收到Http状态=200 浏览器URL:http://localhost:8080/testredirect 浏览器显示:Hello world 预期结果: 浏览器应接

  • 问题内容: 我觉得有点愚蠢,但它不起作用: 我有如果给定的用户是unicode。如果字符串中包含或,我想打印成功,但是我总是得到的结果。 问题答案: 隐式锚定到字符串的开头。如果要在字符串中搜索可以在字符串中任何位置的子字符串,则需要使用: 输出: 另外,Python Regexes不需要在开头和结尾都有一个。 最后,我添加到该行的末尾,因为我认为这就是您想要的。否则,您会得到类似的信息,但并不太

  • 我试图通过spring boot学习Spring Security的基础知识,我创建了一个项目,其中还包括postgresql设置。Postgresql部分按预期工作。 问题是,在我通过正确的凭据访问安全endpoint后,我只是试图使用正确的用户名和错误的密码进行访问,并期待401错误,但返回200。并返回endpoint的内容。 如果我使用和进行基本身份验证请求,则响应为401 UnAutho

  • 我正在做一个新项目,我想实现一个“等到网站打开”功能,如果http://switch-check.cf/index.php打开,然后继续。 现在,在我的帮助下。htaccess和php我尽了最大的努力。禁止访问php文件。因此,如果你试图访问我提到的网页,你应该得到一个 403拒绝访问 因此,我使用urllib(也尝试了请求)查看网站是否已打开或仍处于禁止访问状态然而,无论我尝试什么,我总是得到2

  • 问题内容: 我以前使用过媒体播放器,但从未遇到过此问题。每当我尝试使用MediaPlayer.create()时,该方法都会使我为null,并且无法播放声音。有什么我想念的吗? 我的sound.mp3在我的原始文件夹中,通过将声音拖到eclipse中的文件夹中,我将其放置在其中。请帮忙,因为我以前玩过声音,所以这真的困扰我:( 问题答案: 如果create() API由于某种原因失败,则返回nul