如何在Drupal 8中以编程方式禁用区块缓存功能?

安祖 提交于 周三, 04/17/2019 - 15:21

为了要提高页面生成的速度,Drupal的预设定是启用了区块(block)和页面(page)缓存(caching)的。而不是对于每个页面生成的要求(request),Drupal亦需要动态地执行一次复杂的SQL查询来完成,Drupal会缓存这些查询的结果,以便日后进行更快速的检索。

但是,由于某种原因,我们可能希望或需要禁用特定区块的缓存功能。如果您正在构建自己的自定义块模块(custom module),并且您希望禁用区块的预设缓存功能。在这里,您将找到合适的代码来完成任务!

要禁用一个区块的缓存功能,您实际上只需要在你所建立的的Block class内加入覆盖getCacheMaxAge方法(method),并返回一个"0"值,这会将max-age的默认值设置为"0"。其具体执行的参考代码如下:

 

      /**
      * {@inheritdoc}
      */
      public function getCacheMaxAge(){
         return 0;
      }

 

标签

在Perl语言中,可以检查一个变量是否属于数组变量吗?

安祖 提交于 周二, 04/16/2019 - 23:11

Perl语言是一种非常强大的计算机语言,它的多功能性总能超出一般人所想到的期望。主题问题的答案是可以,而且你不仅可以检查一个变量(variable)是否属于数组(array)变量,也同时可以检查它究竟是否属于其他类型的变量。在Perl语言中,如果你不能确定一个变量的类型,你可以使用ref()函数来作出判断,其中它的使用方法可以参考以下例子:

 

if ( ref($var) eq 'ARRAY' ) {
   # 如果变量$var是一个数组变量,则if的结果是true,执行此代码行
}

 

上面的示例尝试测试变量$var是否是属于数组变量类型。如果是真的,它将执行某些代码,若果是false,则跟过执行某些代码。ref()函数的内置类型(builtin type)被定义为以下内容:

标签

如何解决Perl的"Wide character in print at"错误?

安祖 提交于 周一, 04/15/2019 - 20:09

如果你经常有用Perl语言来完成文字处理(text processing)工作,你可能会遇到过以下错误(error):

Wide character in print at ...

这个错误通常发生在当你要印列(print)输出(output)到标准输出(standard output; STDOUT)设备时,其背后的原因是由于Perl脚本输出的和标准输出设备之间使用字符编码不配。在一般情况下,你可简单地将下面的语句加入在脚本的开头某处即可解决问题。

binmode STDOUT,":encoding(UTF-8)";

要知道,在电脑世界𥚃,使用字节(byte)来表示字符(character)的方法有很多种。它们被称为字符编码(character encoding),或简称为编码(encoding)。上面的语句目的在于告诉Perl程序,它必须使用UTF-8编码来输出。 宽字元(wide character)是计算机抽象术语(没有规定具体实现细节),表示比8位元字元(8-bit character))还宽的资料类型(datetype)。增加了资料类型的大小将可允许使用更庞大的编码字符集(character set)。

标签

如何使用perl轻松解析XML文件?

安祖 提交于 周日, 04/14/2019 - 12:59

可扩展标记语言(Extensible Markup Language; XML)是一种标记语言,它定义了一组规则,用于以人类可读(human readable)和机器可读(machine readable)的格式编码文档。为什么我们需要XML?XML在许多不同的信息系统中起着重要作用,XML通常用于通过互联网分发数据。对所有类型的软件开发人员来说,对XML有一个很好的理解十分重要。

当您需要处理由其他应用程序生成的XML或者您需要创建XML以满足其他应用程序的要求时,Perl作为一种强大的语言,可以轻松处理任何此类任务。下面介绍一个Perl脚本示例,它可以帮助您轻松解析XML格式编码文档。在下面的例子中,是使用了Perl的XML::Simple模块。

首先,让我们考虑一下我们有一个XML文件,如下所示:

标签

如何告诉Perl每10秒运行一些代码?

安祖 提交于 周日, 04/14/2019 - 12:58

您可以使用Perl内置函数sleep来完成此任务,Perl代码示例如下:

 

while () {
   sleep 10;
   # 在此放置你要每10秒执行一次的代码;
}

 

在典型的Linux操作系统中,虽然Perl程序中的睡眠功能可以适用于某些情况,但如果你想要无限期地(indefinitely)以时间间隔(time interval)方式重复运行一些代码,那么你最好使用像"cron"这样的外部工具。

标签

HTTP请求错误状态代码

安祖 提交于 周日, 04/14/2019 - 12:57

HTTP代码会描述访问者尝试访问一个网址(Universal Resource Locator; URL)时的状态。HTTP代码包含描述访问者遇到的问题的错误消息。代码一般是三位数字,若第一个数字是"4",表示客户端错误(client-side error)。最常见的客户端错误错误代码跨越"400"到"404"。若第一个数字是5,表示服务器端错误(server-side error)。最常见的代码跨越"500"到"510"。

标签

在HTML文件中,如何使同一行内的文字分别左和右同时对齐?

安祖 提交于 周日, 04/14/2019 - 12:55

在超文本标记语言(Hypertext Markup Language; HTML)文件中,在同一行文字内,如何使其中一些文本与左对齐(left-aligned),同时又要一些文本在同一行内右对齐(right-aligned)?解决方案非常简单。 例如,如果您想获得以下结果:

This sentence is left aligned.This text is right aligned.

则可以使用以下HTML代码:

 

<p style="text-align: left">This sentence is left aligned.<span style="float:right;">This text is right aligned.</span></p>

 

若您希望使用HTML和级联样式表(Cascade Style Sheet; CSS)样式方法来完成,则可以参考下面的示例代码:

 

标签

如何解决Drupal站点徽标不更新问题

安祖 提交于 周日, 04/14/2019 - 12:54

如果您在Drupal站点内更新了Drupal站点徽标(site logo),但无法在网页浏览器(web browser)上看到站点页面上反映你所做了的更改,这是为什么?又可以怎样做呢?

如果您确定您的更新程序是正确的,但您仍没有看到您的网页上反映出更新,那么原因很可能是缓存(cache)问题。

首先要做的事情是清除网页服务器(web server)缓存,然后清除浏览器缓存。但是,您可能已经清除了网页服务器缓存,但仍然无效。在这种情况下,可以尝试从网页浏览器方面着手,使用强制刷新(force reload)页面功能。请记住,在您直接清除整个浏览器缓存之前,您可以先尝试这个技巧。通常,当您刷新页面时,您的浏览器仍然会提供页面的缓存版本,而不是再次下载所有资源。但您实际上可以绕过缓存,并使用一些简单的快捷键(shortcut key)来完成强制刷新页面,以下是在不同网页浏览器中使用到的有关快捷键:

标签

在vi使用正则表达式匹配仅包含2个连续大写字母的字符串

安祖 提交于 周日, 04/14/2019 - 12:53

考虑我们有一个这样的段落(paragraph):

My initial is Bonnie Chan and my initial is BC. His name is Andrew Cheung and his initial is AC.

如果我们需要從以上段落找出所有的草签(inital),即包含2个连续大写字母(two consecutive uppercase letters)的字符串(string),在vi文本编辑器中,我们可以使用以下正则表达式(regular expression)來完成:

[A-Z]\{2}

要了解这个正则表达式的工作原理,可以参考以下注释:

标签

如何快速制作含A到Z条目的HTML词汇表模板

安祖 提交于 周日, 04/14/2019 - 12:49
要用HTML来构建一个含A到Z条目的词汇表页面,您可以按照以下步骤快速完成。
  1. 将以下字符串复制到文本编辑器中; A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*
  2. 在文本编辑器中,使用搜寻(find)和替换(replace)功能,替换全部"*"字符,如下:
    搜寻: *

标签