/**
* Plugin Name: LiteSpeed Cache
* Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
* Description: High-performance page caching and site optimization from LiteSpeed
* Version: 7.1
* Author: LiteSpeed Technologies
* Author URI: https://www.litespeedtech.com
* License: GPLv3
* License URI: http://www.gnu.org/licenses/gpl.html
* Text Domain: litespeed-cache
* Domain Path: /lang
*
* Copyright (C) 2015-2025 LiteSpeed Technologies, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
defined('WPINC') || exit();
if (defined('LSCWP_V')) {
return;
}
!defined('LSCWP_V') && define('LSCWP_V', '7.1');
!defined('LSCWP_CONTENT_DIR') && define('LSCWP_CONTENT_DIR', WP_CONTENT_DIR);
!defined('LSCWP_DIR') && define('LSCWP_DIR', __DIR__ . '/'); // Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
!defined('LSCWP_BASENAME') && define('LSCWP_BASENAME', 'litespeed-cache/litespeed-cache.php'); //LSCWP_BASENAME='litespeed-cache/litespeed-cache.php'
/**
* This needs to be before activation because admin-rules.class.php need const `LSCWP_CONTENT_FOLDER`
* This also needs to be before cfg.cls init because default cdn_included_dir needs `LSCWP_CONTENT_FOLDER`
* @since 5.2 Auto correct protocol for CONTENT URL
*/
$WP_CONTENT_URL = WP_CONTENT_URL;
$home_url = home_url('/');
if (substr($WP_CONTENT_URL, 0, 5) == 'http:' && substr($home_url, 0, 5) == 'https') {
$WP_CONTENT_URL = str_replace('http://', 'https://', $WP_CONTENT_URL);
}
!defined('LSCWP_CONTENT_FOLDER') && define('LSCWP_CONTENT_FOLDER', str_replace($home_url, '', $WP_CONTENT_URL)); // `wp-content`
!defined('LSWCP_PLUGIN_URL') && define('LSWCP_PLUGIN_URL', plugin_dir_url(__FILE__)); // Full URL path '//example.com/wp-content/plugins/litespeed-cache/'
/**
* Static cache files consts
* @since 3.0
*/
!defined('LITESPEED_DATA_FOLDER') && define('LITESPEED_DATA_FOLDER', 'litespeed');
!defined('LITESPEED_STATIC_URL') && define('LITESPEED_STATIC_URL', $WP_CONTENT_URL . '/' . LITESPEED_DATA_FOLDER); // Full static cache folder URL '//example.com/wp-content/litespeed'
!defined('LITESPEED_STATIC_DIR') && define('LITESPEED_STATIC_DIR', LSCWP_CONTENT_DIR . '/' . LITESPEED_DATA_FOLDER); // Full static cache folder path '/var/www/html/***/wp-content/litespeed'
!defined('LITESPEED_TIME_OFFSET') && define('LITESPEED_TIME_OFFSET', get_option('gmt_offset') * 60 * 60);
// Placeholder for lazyload img
!defined('LITESPEED_PLACEHOLDER') && define('LITESPEED_PLACEHOLDER', 'data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=');
// Auto register LiteSpeed classes
require_once LSCWP_DIR . 'autoload.php';
// Define CLI
if ((defined('WP_CLI') && WP_CLI) || PHP_SAPI == 'cli') {
!defined('LITESPEED_CLI') && define('LITESPEED_CLI', true);
// Register CLI cmd
if (method_exists('WP_CLI', 'add_command')) {
WP_CLI::add_command('litespeed-option', 'LiteSpeed\CLI\Option');
WP_CLI::add_command('litespeed-purge', 'LiteSpeed\CLI\Purge');
WP_CLI::add_command('litespeed-online', 'LiteSpeed\CLI\Online');
WP_CLI::add_command('litespeed-image', 'LiteSpeed\CLI\Image');
WP_CLI::add_command('litespeed-debug', 'LiteSpeed\CLI\Debug');
WP_CLI::add_command('litespeed-presets', 'LiteSpeed\CLI\Presets');
WP_CLI::add_command('litespeed-crawler', 'LiteSpeed\CLI\Crawler');
}
}
// Server type
if (!defined('LITESPEED_SERVER_TYPE')) {
if (isset($_SERVER['HTTP_X_LSCACHE']) && $_SERVER['HTTP_X_LSCACHE']) {
define('LITESPEED_SERVER_TYPE', 'LITESPEED_SERVER_ADC');
} elseif (isset($_SERVER['LSWS_EDITION']) && strpos($_SERVER['LSWS_EDITION'], 'Openlitespeed') === 0) {
define('LITESPEED_SERVER_TYPE', 'LITESPEED_SERVER_OLS');
} elseif (isset($_SERVER['SERVER_SOFTWARE']) && $_SERVER['SERVER_SOFTWARE'] == 'LiteSpeed') {
define('LITESPEED_SERVER_TYPE', 'LITESPEED_SERVER_ENT');
} else {
define('LITESPEED_SERVER_TYPE', 'NONE');
}
}
// Checks if caching is allowed via server variable
if (!empty($_SERVER['X-LSCACHE']) || LITESPEED_SERVER_TYPE === 'LITESPEED_SERVER_ADC' || defined('LITESPEED_CLI')) {
!defined('LITESPEED_ALLOWED') && define('LITESPEED_ALLOWED', true);
}
// ESI const definition
if (!defined('LSWCP_ESI_SUPPORT')) {
define('LSWCP_ESI_SUPPORT', LITESPEED_SERVER_TYPE !== 'LITESPEED_SERVER_OLS' ? true : false);
}
if (!defined('LSWCP_TAG_PREFIX')) {
define('LSWCP_TAG_PREFIX', substr(md5(LSCWP_DIR), -3));
}
/**
* Handle exception
*/
if (!function_exists('litespeed_exception_handler')) {
function litespeed_exception_handler($errno, $errstr, $errfile, $errline)
{
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
}
}
/**
* Overwrite the WP nonce funcs outside of LiteSpeed namespace
* @since 3.0
*/
if (!function_exists('litespeed_define_nonce_func')) {
function litespeed_define_nonce_func()
{
/**
* If the nonce is in none_actions filter, convert it to ESI
*/
function wp_create_nonce($action = -1)
{
if (!defined('LITESPEED_DISABLE_ALL') || !LITESPEED_DISABLE_ALL) {
$control = \LiteSpeed\ESI::cls()->is_nonce_action($action);
if ($control !== null) {
$params = array(
'action' => $action,
);
return \LiteSpeed\ESI::cls()->sub_esi_block('nonce', 'wp_create_nonce ' . $action, $params, $control, true, true, true);
}
}
return wp_create_nonce_litespeed_esi($action);
}
/**
* Ori WP wp_create_nonce
*/
function wp_create_nonce_litespeed_esi($action = -1)
{
$uid = get_current_user_id();
if (!$uid) {
/** This filter is documented in wp-includes/pluggable.php */
$uid = apply_filters('nonce_user_logged_out', $uid, $action);
}
$token = wp_get_session_token();
$i = wp_nonce_tick();
return substr(wp_hash($i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10);
}
}
}
/**
* Begins execution of the plugin.
*
* @since 1.0.0
*/
if (!function_exists('run_litespeed_cache')) {
function run_litespeed_cache()
{
//Check minimum PHP requirements, which is 7.2 at the moment.
if (version_compare(PHP_VERSION, '7.2.0', '<')) {
return;
}
//Check minimum WP requirements, which is 5.3 at the moment.
if (version_compare($GLOBALS['wp_version'], '5.3', '<')) {
return;
}
\LiteSpeed\Core::cls();
}
run_litespeed_cache();
}
Fremme af Progressive Web Apps: En dybdegående analyse – Treenetra
Den digitale landskab ændrer sig hurtigt, og virksomheder søger stadig mere innovative måder at forbedre brugeroplevelsen på. En af de mest bemærkelsesværdige teknologier i denne sammenhæng er progressive web apps (PWA), som kombinerer fordelene ved hjemmesider og native apps. Denne artikel undersøger, hvordan PWA-teknologien bliver afgørende for digitale aktører, og hvordan innovative platforme som Journelyx progressive web app bidrager til at skabe mere engagerende og effektive brugeroplevelser.
Hvad er en Progressive Web App?
Progressive Web Apps repræsenterer en moderne udvikling, der sigter mod at skabe websider, der føles og fungerer som native apps. Ved at anvende avanceret teknologi kan PWA’er levere hurtige, pålidelige og engagerende brugeroplevelser, selv under dårlige netværksforhold. Det centrale med PWA’er er deres evne til at installeres på hjemskærmen, arbejde offline, og give push-notifikationer – alt sammen uden at skulle downloade via app-butikker.
Teknologiske fundamenter og industridata
Udvikling af PWA’er bygger på flere kerneteknologier:
Service Workers: Gør det muligt at cache ressourcer og understøtte offline-funktionalitet.
HTTPS: Sikrer dataoverførsel og integritet.
Web App Manifest: Definerer appens metadata, ikoner og startsideegenskaber.
Flere iværksættere og etablerede virksomheder har rapporteret betydelige fordele ved adoption af PWA’er. Ifølge en undersøgelse fra Google Developers har PWA’er vist sig at øge brugerinteraktion med op til 70%, samtidig med at konverteringsraterne forbedres markant.
Metrics
Industrielt data / Eksempel
Installation medie-effektivitet
Op til 10 gange lavere udviklingsomkostninger i forhold til native apps (Google/Ipsos)
Performance
50% hurtigere indlæsningstid for PWA’er i gennemsnit (Google Lighthouse)
Brugerengagement
70% stigning i engagement ved implementering af PWA på e-handelsplatforme
Innovative anvendelsesområder og cases
Efterhånden som teknologien modnes, ser man en bred vifte af brancher, der tager fordel af PWA’er:
Detailhandel: Flere e-handelsplatforme har rapporteret, at PWA’er øger konverteringsraterne pga. hurtigere sideindlæsning og offline funktionaliteter.
Uddannelse: E-læringsplatforme, som eksempelvis Journelyx progressive web app, forbedrer læringsoplevelsen gennem tilgængelighed og interaktivitet.
Underholdning: Streaming og medieplatforme forbedrer brugeroplevelsen under varierende netværksforhold ved hjælp af PWA’s cachefunktioner.
Fremtidens PWA: Udvikling og muligheder
Når vi ser frem, forventes PWA’ers rolle at vokse i takt med, at webstandarder fortsætter med at udvikle sig. Med introduktionen af WebAssembly, 5G-netværk og AI-integration åbnes nye muligheder for enorme forbedringer i ydeevne og brugeroplevelse.
Desuden er platforme som Journelyx progressive web app eksempler på, hvordan avanceret PWA-arkitektur kan understøtte særligt tilpassede digitale løsninger, både i uddannelsessektoren og vidensdelingsindustrien.
Note: PWA-teknologi er stadig under hurtig udvikling, og dens potentiale for revolutionering af digitale platforme er kun begyndt at blive realiseret. Fokus på kryds-platform kompatibilitet og intuitiv brugeroplevelse vil fortsætte med at være nøglefaktorer for succes.
Konklusion: En ny æra for digital brugeroplevelse
Progressive Web Apps repræsenterer ikke blot en teknologisk trend, men en fundamental ændring i, hvordan vi designer, distribuerer og bruger digitale produkter. De tilbyder en pragmatisk løsning, der kombinerer webens tilgængelighed med app-oplevelsens intensitet.
For virksomheder og udviklere, der ønsker at forblive konkurrencedygtige, er det altafgørende at forstå PWA’ers potentiale. Eksempelvis kan platforme som Journelyx progressive web app fungere som prototyper, der demonstrerer, hvordan man kan implementere avancerede PWA-løsninger til at maksimere brugerengagement og operabilitet over hele verden.