【问题标题】:Drupal module Boost with https, pulling the wrong cache pagesDrupal 模块 Boost with https,拉错缓存页面
【发布时间】:2015-06-17 04:54:37
【问题描述】:

我正在我的站点上为 Drupal 实现 boost 模块并且遇到了这个缓存问题。该站点缓存页面,但是当以匿名用户身份访问时,它给了我错误的缓存页面。我在爱尔兰,希望看到该网站的爱尔兰版本,但是一旦主页被缓存,它就会为我提供该网站的美国版本。

以下是我实施 Boost 所采取的步骤列表

  • 首先我转到 /admin/config/development/performance 并禁用“为匿名用户缓存页面”
  • 然后我在模块页面上启用了“Boost”和“Boost Crawler”
  • 我转到 .HTACCESS 并禁用“绕过 ssl 请求的加速缓存”,因为实时站点具有 https。
  • 我生成 .HTACCESS 并将其插入到我自己的 .HTACCESS 文件中的正确位置

我有一种感觉,我可能需要在 .HTACCESS 文件中编写一些自定义代码才能使其正常工作,但在继续之前我真的想要更多的激励。

目前,该网站的未缓存版本在每个国家/地区都可以正确提供,但速度很慢。

所以总结一下我真正需要 Boost 为我做的事情是缓存网站的 200 个版本(这就是我们为网站提供服务的国家/地区的数量),并为这些国家/地区提供正确版本的网站。这可能吗?我该如何实施?

非常感谢任何帮助,谢谢。

更新 1

将此处的代码添加到.HTACCESS后

RewriteCond %{HTTP:Accept-Language} ^et.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /et [L,R=302]
RewriteCond %{HTTP:Accept-Language} ^fi.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /fi [L,R=302]

并通过几个不同的代理访问该站点,我将其缓存在其国家/地区,但现在的问题是它仅缓存了第一个匿名访问者来自的国家/地区。

我的主页位于 cache/normal/SITES_NAME/en_.html 中,我来自巴西、德国、美国、南非或爱尔兰的哪个站点似乎并不重要,它只是缓存en_.html 中的第一个,并在确实需要为每个国家/地区创建一组新的缓存文件时将其提供给任何地方。

我一直在使用 geopeeker.com 和不同的代理来查看来自世界不同地区的网页。

【问题讨论】:

  • 强烈建议不要在 https 网站上使用 boost,因为任何形式都可能会泄露信息,商店库存可能会发生变化,而且 .htaccess 还会禁用 https 网站的 boost,因此有多个地方可以更改。链接 - drupal.org/node/1466480 可能对您有所帮助。

标签: caching ssl drupal https


【解决方案1】:

如果您使用路径前缀来检测语言,Boost 将不起作用。

您必须将其添加到您的 .htaccess 中才能解决问题。

RewriteCond %{HTTP:Accept-Language} ^et.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /et [L,R=302]
RewriteCond %{HTTP:Accept-Language} ^fi.*$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{QUERY_STRING} !(^q\=) [NC]
RewriteRule ^(.*)$ /fi [L,R=302]

link 提供更多信息。

【讨论】:

  • 感谢您的快速响应,我应该将此代码放在### BOOST START ### 下方吗?
  • 是的,试试吧,看看这个链接,因为它提供了关于你的问题的有价值的信息!
  • 所以我试了一下并阅读了链接上的问题(谢谢你的顺便说一句),但它似乎缓存了匿名用户访问的网站的第一个版本,然后提供它。我得到了巴西版本的缓存,并在爱尔兰版本上提供了该页面。
  • 这个例子提供了像 /et 和 /fi 这样的语言的解决方案,你有没有根据你的需要改变这个路由?
  • 我需要它可以在 200 个国家/地区检测到,所以我只是针对每个国家/地区进行了扩展。我现在看到这个 sn-p 只适用于 2 个国家。所以我需要为我需要检测的每一行添加这 4 行。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2011-04-11
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多