晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/rainic/public_html/oldTZh/wp-content/plugins/wp-rocket/inc/Engine/Preload/ |
Upload File : |
<?php
namespace WP_Rocket\Engine\Preload;
use WP_Rocket\Admin\Options_Data;
use WP_Rocket\Engine\CDN\CDN;
use WP_Rocket\Event_Management\Subscriber_Interface;
/**
* Fonts preload.
*
* @since 3.6
*/
class Fonts implements Subscriber_Interface {
/**
* WP Rocket Options instance.
*
* @since 3.6
*
* @var Options_Data
*/
private $options;
/**
* WP Rocket CDN instance.
*
* @since 3.6
*
* @var CDN
*/
private $cdn;
/**
* Font formats allowed to be preloaded.
*
* @since 3.6
* @see $this->sanitize_font()
*
* @var string|bool
*/
private $font_formats = [
'otf',
'ttf',
'svg',
'woff',
'woff2',
];
/**
* Return an array of events that this subscriber wants to listen to.
*
* @since 3.6
*
* @param Options_Data $options WP Rocket Options instance.
* @param CDN $cdn WP Rocket CDN instance.
*/
public function __construct( Options_Data $options, CDN $cdn ) {
$this->options = $options;
$this->cdn = $cdn;
}
/**
* Return an array of events that this subscriber wants to listen to.
*
* @since 3.6
*
* @return array
*/
public static function get_subscribed_events() {
return [
'rocket_buffer' => [ 'preload_fonts', 20 ],
];
}
/**
* Add the required <link/> tags used to preload fonts.
*
* @param string $html html buffer.
* @return string
*
* @since 3.6
*/
public function preload_fonts( $html ): string {
if ( ! $this->is_allowed() ) {
return $html;
}
$fonts = $this->options->get( 'preload_fonts', [] );
/**
* Filters the list of fonts to preload
*
* @since 3.6
*
* @param array $fonts Array of fonts paths.
*/
$fonts = (array) apply_filters( 'rocket_preload_fonts', $fonts );
$fonts = array_map( [ $this, 'sanitize_font' ], $fonts );
$fonts = array_filter( $fonts );
if ( empty( $fonts ) ) {
return $html;
}
$base_url = get_rocket_parse_url( home_url() );
$base_url = "{$base_url['scheme']}://{$base_url['host']}";
$preloads = '</title>';
foreach ( array_unique( $fonts ) as $font ) {
$preloads .= sprintf(
"\n<link rel=\"preload\" as=\"font\" href=\"%s\" crossorigin>",
esc_url( $this->cdn->rewrite_url( $base_url . $font ) )
);
}
return preg_replace( '#</title>#', $preloads, $html, 1 );
}
/**
* Sanitize a font file path.
*
* @since 3.6
*
* @param string $file Filepath to sanitize.
* @return string|bool Sanitized filepath. False if not a font file.
*/
private function sanitize_font( $file ) {
if ( ! is_string( $file ) ) {
return false;
}
$file = trim( $file );
if ( empty( $file ) ) {
return false;
}
$ext = strtolower( pathinfo( wp_parse_url( $file, PHP_URL_PATH ), PATHINFO_EXTENSION ) );
if ( ! in_array( $ext, $this->font_formats, true ) ) {
return false;
}
return $file;
}
/**
* Checks if we should add the preload links
*
* @since 3.8.8
*
* @return bool
*/
private function is_allowed() : bool {
if ( rocket_bypass() ) {
return false;
}
/**
* Filters the preload fonts links addition
*
* @since 3.8.8
*
* @param bool $disable_preload_fonts True to disable, false otherwise.
*/
return ! apply_filters( 'rocket_disable_preload_fonts', false );
}
}