/* * Plugin Name: APCu Object Cache * Description: APCu backend for the WP Object Cache. * Based on Plugin named APCu Object Cache Backend * Plugin URI: https://wordpress.org/plugins/apcu/ * Author: Pierre Schmitz * Author URI: https://pierre-schmitz.com/ * Plugin URI: https://wordpress.org/plugins/apcu/ * * * @Authors James Dugger, Jonathan Bardo * @copyright 2017 GoDaddy Inc. 14455 N. Hayden Road Scottsdale, Arizona */ $oc_logged_in = false; foreach ( $_COOKIE as $k => $v ) { if ( preg_match( '/^comment_author|wordpress_logged_in_[a-f0-9]+|woocommerce_items_in_cart|PHPSESSID_|edd_wp_session|edd_items_in_cartcc_cart_key|ccm_token/', $k ) ) { $oc_logged_in = true; break; } } $oc_blocked_page = ( defined( 'WP_ADMIN' ) || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) || 'wp-login.php' === basename( $_SERVER['SCRIPT_FILENAME'] ) ); function wpaas_is_using_apcu() { return version_compare( PHP_VERSION, '5.6.0', '>=' ) && function_exists( 'apcu_fetch' ); } if ( 'cli' !== php_sapi_name() && ! $oc_logged_in && ! $oc_blocked_page && wpaas_is_using_apcu() ) : /** * Save the transients to the DB. The explanation is a bit too long * for code. The tl;dr of it is that we don't have a single 'fast cache' * source yet (like memcached) and so some long lived items like transients * are still best cached in the db and then brought back into APC * * @param string $transient * @param mixed $value * @param int $expire * @param boolean $site = false * * @return bool */ function wpaas_save_transient( $transient, $value, $expire, $site = false ) { global $wp_object_cache, $wpdb; // The 'special' transient option names $transient_timeout = ( $site ? '_site' : '' ) . '_transient_timeout_' . $transient; $transient = ( $site ? '_site' : '' ) . '_transient_' . $transient; // Cap expiration at 24 hours to avoid littering the DB if ( $expire == 0 ) { $expire = 24 * 60 * 60; } // Save to object cache $wp_object_cache->set( $transient, $value, 'options', $expire ); $wp_object_cache->set( $transient_timeout, time() + $expire, 'options', $expire ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); $alloptions[ $transient ] = $value; $alloptions[ $transient_timeout ] = time() + $expire; $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); // Use the normal update option logic if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); if ( $site && is_multisite() ) { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } else { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } $wpdb->suppress_errors( $flag ); } return true; } function wpaas_prune_transients() { global $wpdb; if ( ! empty( $wpdb ) && $wpdb instanceof wpdb && function_exists( 'is_main_site' ) && function_exists( 'is_main_network' ) ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); // Lifted straight from schema.php // Deletes all expired transients. // The multi-table delete syntax is used to delete the transient record from table a, // and the corresponding transient_timeout record from table b. $time = time(); $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_transient\_%' AND a.option_name NOT LIKE '\_transient\_timeout\_%' AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) AND b.option_value < $time" ); if ( is_main_site() && is_main_network() ) { $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_site\_transient\_%' AND a.option_name NOT LIKE '\_site\_transient\_timeout\_%' AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) AND b.option_value < $time" ); } $wpdb->suppress_errors( $flag ); } } /** * If another cache was flushed or updated, sync across all servers / processes using * the database as the authority. This uses the database as the authority for timestamps * as well to avoid drift between servers. * @return void */ function wpaas_init_sync_cache() { global $wpdb; if ( empty( $wpdb ) || ! ( $wpdb instanceof wpdb ) ) { return; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name = 'gd_system_last_cache_flush' UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( empty( $result ) ) { return; } $master_flush = false; foreach ( $result as $row ) { switch ( $row['option_name'] ) { case 'current_time' : $current_time = $row['option_value']; break; case 'gd_system_last_cache_flush' : $master_flush = $row['option_value']; break; } } $local_flush = wp_cache_get( 'gd_system_last_cache_flush' ); if ( false === $local_flush || $local_flush < $master_flush ) { wp_cache_flush( true ); wp_cache_set( 'gd_system_last_cache_flush', $current_time ); } } /** * Start default implementation of object cache */ if ( ! defined( 'WP_APC_KEY_SALT' ) ) { define( 'WP_APC_KEY_SALT', '' ); } function wp_cache_add( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( 'transient' == $group ) { wpaas_save_transient( $key, $data, $expire ); return $wp_object_cache->add( "_transient_$key", $data, 'options', $expire ); } elseif ( 'site-transient' == $group ) { wpaas_save_transient( $key, $data, $expire, true ); return $wp_object_cache->add( "_site_transient_$key", $data, 'site-options', $expire ); } else { return $wp_object_cache->add( $key, $data, $group, $expire ); } } function wp_cache_incr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->incr2( $key, $n, $group ); } function wp_cache_decr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->decr( $key, $n, $group ); } function wp_cache_close() { return true; } function wp_cache_delete( $key, $group = '' ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$wpdb->prefix}options` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_transient_$key"] ); unset( $alloptions["_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_transient_$key", 'options' ); } elseif ( 'site-transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$table}` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'site-options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_site_transient_$key"] ); unset( $alloptions["_site_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_site_transient_$key", 'site-options' ); } return $wp_object_cache->delete( $key, $group ); } function wp_cache_flush( $local_flush = false ) { global $wp_object_cache, $wpdb; if ( ! $local_flush ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( 'gd_system_last_cache_flush', UNIX_TIMESTAMP( NOW() ), 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );" ); $wpdb->suppress_errors( $flag ); } } return $wp_object_cache->flush(); } function wp_cache_get( $key, $group = '', $force = false ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); if ( isset( $alloptions["_transient_$key"] ) && isset( $alloptions["_transient_timeout_$key"] ) && $alloptions["_transient_timeout_$key"] > time() ) { return maybe_unserialize( $alloptions["_transient_$key"] ); } $transient = $wp_object_cache->get( "_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_transient_{$key}", "_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_transient_$key" : $transient = $row['option_value']; break; case "_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } elseif ( 'site-transient' == $group ) { $transient = $wp_object_cache->get( "_site_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_site_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$table}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_site_transient_{$key}", "_site_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_site_transient_$key" : $transient = $row['option_value']; break; case "_site_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } else { return $wp_object_cache->get( $key, $group, $force ); } } function wp_cache_init() { global $wp_object_cache; if ( mt_rand( 1, 100 ) == 42 ) { wpaas_prune_transients(); } add_action( 'muplugins_loaded', 'wpaas_init_sync_cache' ); $wp_object_cache = new APCu_Object_Cache(); } function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; return $wp_object_cache->replace( $key, $data, $group, $expire ); } function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( defined( 'WP_INSTALLING' ) == false ) { if ( 'transient' == $group ) { return wpaas_save_transient( $key, $data, $expire ); } elseif ( 'site-transient' == $group ) { return wpaas_save_transient( $key, $data, $expire, true ); } else { return $wp_object_cache->set( $key, $data, $group, $expire ); } } else { return $wp_object_cache->delete( $key, $group ); } } function wp_cache_switch_to_blog( $blog_id ) { global $wp_object_cache; return $wp_object_cache->switch_to_blog( $blog_id ); } function wp_cache_add_global_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_global_groups( $groups ); } function wp_cache_add_non_persistent_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_non_persistent_groups( $groups ); } class GD_APCu_Object_Cache { private $prefix = ''; private $local_cache = array(); private $global_groups = array(); private $non_persistent_groups = array(); private $multisite = false; private $blog_prefix = ''; public function __construct() { global $table_prefix; $this->multisite = is_multisite(); $this->blog_prefix = $this->multisite ? get_current_blog_id() . ':' : ''; $this->prefix = DB_HOST . '.' . DB_NAME . '.' . $table_prefix; } private function get_group( $group ) { return empty( $group ) ? 'default' : $group; } private function get_key( $group, $key ) { if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { return $this->prefix . '.' . $group . '.' . $this->blog_prefix . ':' . $key; } else { return $this->prefix . '.' . $group . '.' . $key; } } public function add( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( function_exists( 'wp_suspend_cache_addition' ) && wp_suspend_cache_addition() ) { return false; } if ( isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } // FIXME: Somehow apcu_add does not return false if key already exists if ( ! isset( $this->non_persistent_groups[ $group ] ) && apcu_exists( $key ) ) { return false; } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_add( $key, $data, (int) $expire ); } return true; } public function add_global_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->global_groups[ $group ] = true; } } else { $this->global_groups[ $groups ] = true; } } public function add_non_persistent_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->non_persistent_groups[ $group ] = true; } } else { $this->non_persistent_groups[ $groups ] = true; } } public function decr( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->incr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] - $offset >= 0 ) { $this->local_cache[ $group ][ $key ] -= $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else { $value = apcu_dec( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } } public function delete( $key, $group = 'default', $force = false ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); unset( $this->local_cache[ $group ][ $key ] ); if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_delete( $key ); } return true; } public function flush() { $this->local_cache = array(); // TODO: only clear our own entries apcu_clear_cache(); return true; } public function get( $key, $group = 'default', $force = false, &$found = null ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( ! $force && isset( $this->local_cache[ $group ][ $key ] ) ) { $found = true; if ( is_object( $this->local_cache[ $group ][ $key ] ) ) { return clone $this->local_cache[ $group ][ $key ]; } else { return $this->local_cache[ $group ][ $key ]; } } elseif ( isset( $this->non_persistent_groups[ $group ] ) ) { $found = false; return false; } else { $value = @apcu_fetch( $key, $found ); if ( $found ) { if ( $force ) { $this->local_cache[ $group ][ $key ] = $value; } return $value; } else { return false; } } } public function incr2( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->decr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] + $offset >= 0 ) { $this->local_cache[ $group ][ $key ] += $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else if ( function_exists( 'apcu_inc' ) ) { $value = apcu_inc( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } return false; } public function replace( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->non_persistent_groups[ $group ] ) ) { if ( ! isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } } else { if ( ! isset( $this->local_cache[ $group ][ $key ] ) && ! apcu_exists( $key ) ) { return false; } apcu_store( $key, $data, (int) $expire ); } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } return true; } public function reset() { // This function is deprecated as of WordPress 3.5 // Be safe and flush the cache if this function is still used $this->flush(); } public function set( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_store( $key, $data, (int) $expire ); } return true; } public function stats() { // Only implemented because the default cache class provides this. // This method is never called. echo ''; } public function switch_to_blog( $blog_id ) { $this->blog_prefix = $this->multisite ? $blog_id . ':' : ''; } } if ( function_exists( 'apcu_inc' ) ) { class APCu_Object_Cache extends GD_APCu_Object_Cache { function incr( $key, $offset = 1, $group = 'default' ) { return parent::incr2( $key, $offset, $group ); } } } else { class APCu_Object_Cache extends GD_APCu_Object_Cache { // Blank } } endif;
Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713
{"id":4200,"date":"2020-07-09T12:27:37","date_gmt":"2020-07-09T10:27:37","guid":{"rendered":"https:\/\/oldpics.net\/?p=4200"},"modified":"2020-07-21T20:42:15","modified_gmt":"2020-07-21T18:42:15","slug":"the-story-v-j-day-in-times-square-by-alfred-eisenstaedt","status":"publish","type":"post","link":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/","title":{"rendered":"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt"},"content":{"rendered":"\n

\"V-J‘V-J Day in Times Square’ gained the same historical value as other Victory images like ‘Raising the Flag on Iwo Jima’<\/a> and ‘Flag over the Reichstag<\/a>‘. All of these photos became the symbols of the victory in WW2. World War II cost the U.S. more than half a million people’s lives; almost 700 000\u00a0 were injured. The day when Japan surrendered was glorious and historical for all American people. That’s why when this information spread, masses came out to celebrate the end of the war.\u00a0 Victory over Japan Day (V.J. Day) became a state holiday, and the most iconic symbol of this event in pop-culture is Alfred Eisenstaedt’s photo.<\/span><\/p>\n

Alfred Eisenstaedt wasn’t the only photographer who took the ‘V-J Day in Times Square.’ There were plenty of cameramen on that day. Let’s take another photo by Victor Jorgensen: the same kissing couple on Times Square, but the angle is not so right. His image doesn’t show the magic of the moment as fine as Eisenstaedt’s photo did. So there’s no surprise ‘V-J Day in Times Square’ became iconic and occupied a place in the Top 100 most influential photos in history<\/a>.<\/span><\/p>\n

As Alfred Eisenstaedt said, “I noticed a sailor running along the street grabbing any and every girl in sight. I realized that it could do an exceptional image. So I was rushing ahead of him with my Leica looking back over my shoulder, taking dozens of pictures, but none of them were satisfying. Then suddenly, in a flash, I snapped something white that the sailor grabbed in his strong arms. I turned around and clicked the moment when he kissed the nurse. If she dressed in a dark skirt, I would never have taken the picture. I took exactly four pictures. It was done within a few moments.”\u00a0<\/span><\/p>\n

Even Eisenstaedt himself recognized that the massive part of his success was a bit pure luck.\u00a0<\/span><\/p>\n

But except apparent reasons. The story of the ‘V-J Day in Times Square’ is a little bit larger than one shot.<\/span><\/p>\n

The background of the stilled moment<\/h3>\n

First of all, he is one of the first professional photographers who used a small and portable 35 mm film Leica camera. Nobody at that time took seriously small cameras, and this attitude helped Eisenstaedt to capture very natural expressions of his photo objects. His affection for Leica partially arose from his origin –\u00a0 Eisenstaedt was born and lived in Germany till 1935. He made a career as a documentary photographer in Europe. Several publishers (Associated Press, Illustrierte Zeitung) noticed his talent and acquired his photos regularly. He documented a meeting between Adolf Hitler and Benito Mussolini and took pictures of Joseph Goebbels. He emigrated to the U.S. with the rise of anti-jewish Nazi politics, just like Albert Einstein<\/a> and many others did<\/a>.\u00a0<\/span><\/p>\n

He fitted perfectly in the life of his new homeland and settled in New York. When President Truman announced the end of the war, Eisenstaedt came out on the streets hunting for a good picture. The “dancelike dip,” which “summed up the euphoria many Americans felt as the war came to a close,” drove his attention, and he took four frames. On one of them, the postures of a kissing couple created a dramatic composition.<\/span><\/p>\n

LIFE of ‘V-J Day in Times Square’<\/h3>\n

LIFE magazine published the ‘V-J Day in Times Square,’ and this image became one of the most famous Eisenstaedt creations.<\/span><\/p>\n

Hidden faces, contrast clothing, made characters unified: the one military who returned from war and the one who was waiting at home.<\/span><\/p>\n

Identification of the persons from the photo became an obsession for many journalists. Many people arrived at LIFE’s office and claimed to be a couple from the picture. As a result of the careful investigation, knowledge of the exact time when Eisenstaedt pressed the shutter, many pretenders failed to get publicity.<\/span><\/p>\n

Historians still have doubts about the personalities of the sailor and nurse. In 2012 researchers claimed that their names were George Mendonsa and Greta Zimmer Friedman. But these facts are still uncertain, due to the number of sailors who grabbed and kissed random women during the V-J Day celebration. The person of Mendonsa was identified due to his scars and tattoos, and Zimmer was recognized due to her height and dental hygienist uniform.\u00a0<\/span><\/p>\n

The photo became a cultural phenomenon: it inspired the creation of several statues, was used as a cameo in cartoons (The Simpsons) and movies (Night at the Museum: Battle of the Smithsonian, Watchmen, Letters to Juliet), appeared in video games (Wolfenstein: The New Order).\u00a0<\/span><\/p>\n

Except for cultural meaning, the photo rose a question of the public percipience of a sexual assault. This issue relies not only on the picture: many women suffered the assaults by the drunk sailors, soldiers grabbed and kissed girls without permission.<\/span><\/p>\n

Sexual assault or victory emotions?<\/h3>\n

Greta Zimmer Fridman said that “A sailor grabbed me and it wasn’t that much of a kiss, it was more of a happy act that he didn’t have to go back to war. And the reason he grabbed someone dressed as a nurse was that he just felt very grateful to nurses who took care of the wounded. I felt he was powerful; he was just holding me tight. I’m not sure about the kiss because, you know, it was just somebody celebrating. But it wasn’t a romantic event. It was just an event of thanking God the war is over kind of thing,” adding that “it wasn’t my choice to be kissed. The guy just came over and kissed or grabbed.”<\/span><\/p>\n

After Mendosa’s death, someone scribbled graffiti on the statue in Sarasota: #MeToo, but publicity and social media didn’t support this point of view.\u00a0<\/span><\/p>\n

As for the photographer, Alfred Eisenstaedt lived long and died at the age of 96 in his “Pilot House” cottage.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"

‘V-J Day in Times Square’ gained the same historical value as other Victory images like ‘Raising the Flag on Iwo Jima’ and…<\/p>\n","protected":false},"author":1,"featured_media":3800,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[50,95,74],"yoast_head":"\nThe story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures<\/title>\n<meta name=\"description\" content=\"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures\" \/>\n<meta property=\"og:description\" content=\"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/\" \/>\n<meta property=\"og:site_name\" content=\"Old Pictures\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/oldpics.net\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-09T10:27:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-21T18:42:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1043\" \/>\n\t<meta property=\"og:image:height\" content=\"1424\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrew Piper\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/oldpics.net\/#website\",\"url\":\"https:\/\/oldpics.net\/\",\"name\":\"Old Pictures\",\"description\":\"Historical photos, stories and even more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/oldpics.net\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg\",\"contentUrl\":\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg\",\"width\":1043,\"height\":1424,\"caption\":\"V-J Day in Times Square, Alfred Eisenstaedt, 1945\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#webpage\",\"url\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/\",\"name\":\"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures\",\"isPartOf\":{\"@id\":\"https:\/\/oldpics.net\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#primaryimage\"},\"datePublished\":\"2020-07-09T10:27:37+00:00\",\"dateModified\":\"2020-07-21T18:42:15+00:00\",\"author\":{\"@id\":\"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e\"},\"description\":\"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2\",\"breadcrumb\":{\"@id\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/oldpics.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e\",\"name\":\"Andrew Piper\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/oldpics.net\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/34ef47a4a9a25f9408f24cd33f7d135e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/34ef47a4a9a25f9408f24cd33f7d135e?s=96&d=mm&r=g\",\"caption\":\"Andrew Piper\"},\"url\":\"https:\/\/oldpics.net\/author\/andrew\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures","description":"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/","og_locale":"en_US","og_type":"article","og_title":"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures","og_description":"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2","og_url":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/","og_site_name":"Old Pictures","article_publisher":"https:\/\/www.facebook.com\/oldpics.net\/","article_published_time":"2020-07-09T10:27:37+00:00","article_modified_time":"2020-07-21T18:42:15+00:00","og_image":[{"width":1043,"height":1424,"url":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg","type":"image\/jpeg"}],"twitter_card":"summary","twitter_misc":{"Written by":"Andrew Piper","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/oldpics.net\/#website","url":"https:\/\/oldpics.net\/","name":"Old Pictures","description":"Historical photos, stories and even more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/oldpics.net\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#primaryimage","inLanguage":"en-US","url":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg","contentUrl":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/V-J-Day-in-Times-Square-Alfred-Eisenstaedt-1945.jpg","width":1043,"height":1424,"caption":"V-J Day in Times Square, Alfred Eisenstaedt, 1945"},{"@type":"WebPage","@id":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#webpage","url":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/","name":"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt - Old Pictures","isPartOf":{"@id":"https:\/\/oldpics.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#primaryimage"},"datePublished":"2020-07-09T10:27:37+00:00","dateModified":"2020-07-21T18:42:15+00:00","author":{"@id":"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e"},"description":"The story of 'V-J Day in Times Square' . This photo as imortant as 'Raising the Flag on Iwo Jima' and 'Flag over the Reichstag', and other symbols of WW2","breadcrumb":{"@id":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/oldpics.net\/the-story-v-j-day-in-times-square-by-alfred-eisenstaedt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/oldpics.net\/"},{"@type":"ListItem","position":2,"name":"The story \u2018V-J Day in Times Square\u2019 by Alfred Eisenstaedt"}]},{"@type":"Person","@id":"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e","name":"Andrew Piper","image":{"@type":"ImageObject","@id":"https:\/\/oldpics.net\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/34ef47a4a9a25f9408f24cd33f7d135e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/34ef47a4a9a25f9408f24cd33f7d135e?s=96&d=mm&r=g","caption":"Andrew Piper"},"url":"https:\/\/oldpics.net\/author\/andrew\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts\/4200"}],"collection":[{"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/comments?post=4200"}],"version-history":[{"count":2,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts\/4200\/revisions"}],"predecessor-version":[{"id":4437,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts\/4200\/revisions\/4437"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/media\/3800"}],"wp:attachment":[{"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/media?parent=4200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/categories?post=4200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/tags?post=4200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}