休息响应缓存为访客用户请求 -- caching 领域 和 8 领域 drupal 相关 的问题

REST response gets cached for guest user requests


4
vote

问题

中文

我已经实现了一种页面命中计数器作为REST请求。文章页面将JS呈现为稍后为REST资源执行jQuery.getjson的页面。

到目前为止,工作正常。该页面从缓存中传递(X-Drupal-Cache:"命中" ),浏览器对REST资源的额外请求(/ api / v1 / check / l / 1?_format = Json)。

不幸的是,不再需要REST处理程序为访客用户视图呼叫。相反,Drupal提供缓存的响应。它只适用于经过身份验证的用户。

为访客获得

  search_index8  

但是:

  search_index9  

并且无法执行其余处理程序。我的休息响应是

  search.module0  

感谢

英文原文

I've implemented kind of a page hit counter as REST request. The article page renders a JS into the page that does a jQuery.getJSON to the REST resource later.

So far that works fine. The page is delivered from cache (X-Drupal-Cache:"HIT") and the browser does an extra request to the REST resource (/api/v1/check/l/1?_format=json).

Unfortunately the REST handler is not called for guest user views. Instead, Drupal delivers the cached response. It only works for authenticated users.

For guest I get

Cache-Control:"must-revalidate, no-cache, private" X-Drupal-Dynamic-Cache:"UNCACHEABLE" 

BUT:

X-Drupal-Cache:"HIT" 

And the REST handler is not executed. My REST response is

return (new ResourceResponse($rc))->addCacheableDependency(null); 

Thanks

     
 
 

回答列表

4
 
vote
vote
最佳答案
 

这可能是匿名用户的页面缓存,它独立于动态缓存工作。

您可以使用此命令禁用它:

  Drupal::service('page_cache_kill_switch')->trigger();   

您可以在代码中的任何位置触发此处,它对您为请求发送的任何响应有效。所以这也应该为休息响应工作。

 

This is probably the page cache for anonymous users, which works independently from the dynamic cache.

You can disable it with this command:

\Drupal::service('page_cache_kill_switch')->trigger(); 

You can trigger this anywhere in your code and it will be valid for any response you send for the request. So this should also work for a REST response.

 
 
 
 
4
 
vote

我有资源帖子(用于匿名)。 上述答案没有帮助我。

以下确实如下:

  $response = new ModifiedResourceResponse($result); return $response;   

在 modifiedresourceresponse( )

 

I have a resource post (for anonymous). The above answers Didn't help me.

The following did :

$response = new ModifiedResourceResponse($result); return $response; 

Read more at ModifiedResourceResponse()

 
 
   
   
0
 
vote

尝试将"addcacheabledendency" 添加到"Resourceresponse"

  drupal_get_normal_path0  

为get方法创建REST资源drupal 8

 

Try add 'addCacheableDependency' to 'ResourceResponse'

$response = new ResourceResponse($result); $response->addCacheableDependency($result); return $response; 

Create Rest Resource for GET Method in Drupal 8

 
 

相关问题

0  如何在我的自定义块中添加视图模式缓存依赖项?  ( How to add a view mode caching dependency in my custom block ) 
i有一个块,它呈现节点的字段。在节点实体的视图模式设置中控制每个字段的输出。现在,如何添加依赖视图模式设置的缓存? ...

1  完全删除缓存  ( Completely removing cache ) 
我在local.settings.php中设置了 $settings['cache']['bins']['render'] = 'cache.backend.null; 和 $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null; ...

0  如何正确缓存主题菜单输出?  ( How do i correctly cache a themed menu output ) 
在 mytheme_preprocess_menu() 中,我正在改变主菜单: function mytheme_preprocess_menu(&$variables, $hook) { $node = Drupal::routeMatch()->getParameter('node'); if ('m...

1  禁用前页的缓存  ( Disable caching for the front page ) 
如何禁用前页的缓存,以编程方式? ...

1  每次加载页面时都不会触发事件  ( Event does not trigger each time i load a page ) 
我在自定义模块中使用事件调度程序在Drupal 8网站中自动登录用户。我正在使用kernelevents :: lafe,一个onrequest fonction。我放置回声进行测试,函数是呼叫: 当用户已经登录时,事件工作和我的功能是呼叫每个请求 当用户不是登录(匿名)时,函数是呼叫页面唯一的第一个请求。如果您重...

0  无法编辑节点,在启用升高和编辑后,在etcetera中登录.htaccess  ( Impossible to edit nodes log to in etcetera after enabling boost and editing h ) 
安装并启用 Boost 实际的Boost缓存虽然有效。当我从我的.htaccess文件中删除生成的htaccess规则时,一切都会再次运行(除了升压缓存当然停止工作)。 我的猜测是我的网站不批准的生成的HTACCESS规则中是某种东西。 这是附加的行的外观: ### BOOST START ### ...

2  禁用一个JS文件/库的缓存  ( Disable cache for one js file library ) 
我正在使用drupal 8.1.7并使用组模块。当用户显示组或链接到组的文章(/组/ ...或节点/ ...)时,我想为每个组指定一些特定的CSS。 我开发了执行技巧的模块(验证我们是否显示组或文章,获取组并加载修改页面CSS样式的JS文件)。在我的dev drupal上工作没有缓存,但是当我用缓存活动测试生产模块时...

0  促进与Google Analytics一起工作吗?  ( Does boost work together with google analytics ) 
这可能是一个愚蠢的问题,但可以 Google Analytic 模块仍然跟踪用户和计数页面访问等如果我使用 boost 模块加快我的网站? 有什么我应该知道的吗?例如,我必须在 robots.txt 中做的设置? (除了LINE Disallow: /boost_stats.php 应该根据指令输入)。 ...

0  该目录公共:// XMLSiteMap未找到或不可写入服务器  ( The directory public xmlsitemap was not found or is not writable by the server ) 
我刚刚安装了 xml sitemap 在EC2 Drupal 8实例上。我在管理报告状态页面中看到以下错误消息: XML sitemap cache directory Not found or not writable The directory public://xmlsitemap was not foun...

3  如何确保每个段落单独缓存引用的实体?  ( How can i ensure a referenced entity is cached separately per paragraph ) 
我有一个情况,其中两个 在单页上可能可能引用相同的实体。 受影响的段落有一个字段来改变它们的颜色,此颜色值被传递给引用的实体(通过hook_preprocess_ [实体类型]),以便在其模板中使用。 节点 field_paragraph 第1段 field_colour field_ent...

0  如何使用缓存设置并获得存储时间cron ran?  ( How to use cache set and get to store time cron ran ) 
我们有一个新的要求,我们需要每天运行工作。我们有设置Cron每1小时运行一次。目标是每1小时拥有Cron Ron,但我们希望只有自上次运行以来的1天(24小时)只运行特定的工作。 我们曾经使用变量表来存储作业上次运行的时间,但我们需要更改它以使用缓存表。下面是我们正在审核的代码(mymodule.module),但...

0  Boost使内容/设置的编辑不可能  ( Boost makes the editing of content settings impossible ) 
一旦 Boost 已启用,我将其代码添加到.htaccess中,奇怪的开始发生。编辑内容或设置时不会保存任何更改,击中提交按钮后页面只需重新加载更改,不会显示任何消息,有时管理菜单会消失。对于未登录的用户,升压工作正常,正在生成和服务HTML文件。但它不可能管理该网站,看起来它会影响Drupal作为登录用户或其他东西...

1  禁用hook_menu()实现的菜单缓存  ( Disable menu cache for hook menu implementation ) 
有一种方法可以禁用菜单缓存? 上下文 drupal 7 我有一个实现hook_menu()的自定义模块。仅当视图具有结果时,链接才会显示出来。它正在工作。 问题是,我必须每次视图更改结果的次数时清除Drupal高速缓存,因为不再触发条件。 function gal_custom_menu() { ...

1  不要缓存hook_form_form_id_alter  ( Dont cache hook form form id alter ) 
我制作了一种形式,有几个字段。在钩形表单中,ALTER我添加了一些信息文本,具体取决于$ _get变量的值。 只有钩子改变只推出第一次。 我想要每次观看表格时调用。 我使用错误的钩子? ...

7  如何防止匿名用户缓存表单?  ( How do i prevent a form from being cached for anonymous users ) 
我的表单被预先填充有特定于匿名用户会话信息的信息。但是,默认情况下,表单似乎对所有匿名用户缓存。 "内部动态页面缓存" 已启用,"内部页面缓存" 不是。 如何禁用此表单的缓存?每次显示时都应该重建新鲜。 ...

0  如何加速Drupal 8当页面未缓解(清除缓存后第一次访问)?  ( How to speed up drupal 8 when pages are not cached yet 1st time visit after cle ) 
d8具有令人敬畏的核心缓存,并在第二次访问中非常快地打开页面等。 但是当我清除高速缓存时(使设计改进)响应太长。在我的共享托管中首次访问时,很长的响应。 我想在vps上移动,所以请与我的服务器一起做什么来加速Drupal 8? ...

1  缓存处理非常缓慢:是否有替代方案?  ( Very slow cache processing is there any alternative ) 
我有一些drupal网站和它们的一个常见问题:非常缓慢的加工缓存,因此网站工作非常慢。我已经启用了所有缓存并将它们设置为长时间。但这些网站仍然很慢。 我的服务器有4GHz频率和4G RAM。 DB查询日志显示所有查询都需要100-300ms摘要。 当我使用xhprof执行分析时,我看到序列化,unsermize和ar...

0  如何将缓存上下文添加到区域  ( How to add cache contexts to a region ) 
如何将缓存上下文添加到区域。我已经能够对我的街区这样做,但注意到该地区的一部分仍然缓存。 ...

2  缓存是否如何为块工作?  ( How does caching work for blocks ) 
说我有这种类型的代码在Drupal 8中构建自定义块。 public function build() { //code that does a Guzzle call to retrieve data setting $links to contain that data $build['ar...

1  是否可以以编程方式或通过配置改变特定实体的可加工性  ( Is it possible to alter the cacheability of a specific entity either programatic ) 
我正在编写一个自定义面包屑构建器,并发现我在它中设置的断点由于面包屑实体的缓存而不会发射。当我在创建后检查它时,我可以看到它被创建为永久性可缓存。理想情况下,我能够在Services.yml文件中设置一些东西,告诉它忽略该特定实体。或者,如果有一个并联的Setter,它将工作。 就像它一样,似乎是我唯一的好选择在这里...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.