使用 https 的 Drupal 模块 Boost,提取错误的缓存页面
Drupal module Boost with https, pulling the wrong cache pages
我正在我的网站上实现 Drupal 的提升模块,并且 运行 解决了这个缓存问题。该网站缓存页面,但当以匿名用户身份访问时,它会给我错误的缓存页面。我住在爱尔兰,希望看到该网站的爱尔兰版本,但一旦主页被缓存,它就会给我该网站的美国版本。
这是我实现 Boost 所采取的步骤列表
- 首先,我转到 /admin/config/development/performance 并禁用 "Cache pages for anonymous users"
- 然后我在模块页面
上启用了 "Boost" 和 "Boost Crawler"
- 我转到 .HTACCESS 并禁用 "Bypass the boost cache for ssl requests" 因为实时站点有 https。
- 我生成 .HTACCESS 并将其插入到我自己的 .HTACCESS 文件中的正确位置
我有一种感觉,我可能必须在 .HTACCESS 文件中编写一些自定义代码才能使其正常工作,但在我继续之前,我真的想要更多的 incite。
目前,未缓存版本的站点在每个国家/地区都可以正常提供,但速度非常慢。
所以总结一下,我真正需要 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 和不同的代理来查看来自世界不同地区的页面。
如果您使用路径前缀来检测语言,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 提供了更多信息。
我正在我的网站上实现 Drupal 的提升模块,并且 运行 解决了这个缓存问题。该网站缓存页面,但当以匿名用户身份访问时,它会给我错误的缓存页面。我住在爱尔兰,希望看到该网站的爱尔兰版本,但一旦主页被缓存,它就会给我该网站的美国版本。
这是我实现 Boost 所采取的步骤列表
- 首先,我转到 /admin/config/development/performance 并禁用 "Cache pages for anonymous users"
- 然后我在模块页面 上启用了 "Boost" 和 "Boost Crawler"
- 我转到 .HTACCESS 并禁用 "Bypass the boost cache for ssl requests" 因为实时站点有 https。
- 我生成 .HTACCESS 并将其插入到我自己的 .HTACCESS 文件中的正确位置
我有一种感觉,我可能必须在 .HTACCESS 文件中编写一些自定义代码才能使其正常工作,但在我继续之前,我真的想要更多的 incite。
目前,未缓存版本的站点在每个国家/地区都可以正常提供,但速度非常慢。
所以总结一下,我真正需要 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 和不同的代理来查看来自世界不同地区的页面。
如果您使用路径前缀来检测语言,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 提供了更多信息。