/* * 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":3410,"date":"2020-06-02T05:31:26","date_gmt":"2020-06-02T12:31:26","guid":{"rendered":"https:\/\/oldpics.net\/?p=3410"},"modified":"2020-06-17T07:02:20","modified_gmt":"2020-06-17T14:02:20","slug":"how-robert-frank-created-the-americans","status":"publish","type":"post","link":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/","title":{"rendered":"How Robert Frank created the ‘Americans’"},"content":{"rendered":"\n

Robert Frank is one of the most glorified photographers, Hasselblad Award Winner, the important person in the photo history of the 20th century. ‘Americans’ – the main work of Robert Frank – became a cornerstone for the next generations of photography.<\/span><\/p>\n

\"Trolley

Trolley To New Orleans<\/p><\/div>\n

The central subject of the “Americans” book cover is a tram. Six people (two children among them) look out of the windows. You can see that black passengers are occupying seats at the end of the car, and the first places are reserved for white ones. Each character in this photo carries a story, has its voice. These people cannot be forgotten. This stilled moment is the most American, full of music and tension. What do they see? Who are they looking at?<\/span><\/p>\n

This photo’s name is ‘Trolley to New Orleans’, and it is one of the TOP 100 most influential photos<\/a> according to the TIME magazine.<\/p>\n

\"Robert

Robert Frank, 1993<\/p><\/div>\n

How it began<\/b><\/p>\n

Let’s get back to Robert’s roots. Frank was born in Zurich in November 1924. His father came from a prosperous Jewish family, completely assimilated in Germany. His parents spoken in Swiss-German dialect, an odd mixture of small-town accents, and young Frank wad embarrassed of the fact that relatives spoke differently than other people in their area.<\/span><\/p>\n

Teenaged Robert Frank showed an interest in art, studied photography and graphics at the Zurich gymnasium, where he enriched his toolbox with a solid theoretical base with numerous practical exercises. He took photography lessons from famous Swiss masters, actively worked on creating his style and vision.<\/span><\/p>\n

\"Youth

The youth of Cleveland, 1955<\/p><\/div>\n

The Nazis’ coming to power in Germany forced the photographer’s father to apply for Swiss citizenship. The terrible misfortunes that befell European Jews passed the Franks family.<\/span><\/p>\n

But, again, Robert’s family was a wealthy one, and Herman Frank had several cameras, and photography occupied an essential place in the life of his son. Later, after leaving school, Frank will get a job as an assistant photographer in a Zurich studio, where he will learn how to handle the camera and chemicals.<\/span><\/p>\n

Robert Frank will travel a lot across to Europe after WW2. Paris, Milan, Antwerp\u2026 During this trip, Frank will realize that Switzerland is too small for his ambitions. He didn’t even want to stay in Europe, as another fine photographer August Sander did<\/a>. He started emigration talks, calling himself a bird in a cage.<\/span><\/p>\n

\"office

Office female workers in the diner, NYC, 1954<\/p><\/div>\n

The American dream begins<\/b><\/p>\n

This day came in 1947 when large fashion magazine Harpers Bazaar offered a contract to the young but still proven professional photographer. On March 14, 1947, Bennett Moore ship entered the harbor of New York, and Robert Frank set his foot over the land of the free. He recalled then: “I saw a large country. Endless. I noticed that the Swiss lifestyle is not worth a penny. The Swiss are very polite and somewhat slow in communication. New Yorkers shocked me with their tempo and rudeness … “<\/span><\/p>\n

Frank settles down in the bohemian Greenwich Village. Here he meets his future wife Mary, the dancer’s daughter, a beautiful and independent woman.<\/span><\/p>\n

\"Woman

Robert Frank ‘Americans’: Woman in a cab, NYC, 1956<\/p><\/div>\n

There is a simple success formula applied to Frank’s first years in the US: “to be in the right place at the right time.” He spent his time with the famous photographers and mentors Edward Steichen and Walker Evans. He will receive a Guggenheim Foundation scholarship soon and will depart on his long photo trip across the US.<\/span><\/p>\n

Frank has lived in the States for eight years, and New Jersey and St. Louis were the most distant points of his travels. He wanted to feel how big the country is from ocean to ocean. He was curious and had enough energy to drive his Ford across the whole country: New York – Detroit and New York – Texas – San Francisco – Los Angeles.<\/span><\/p>\n

\"Celebrity

Robert Frank ‘Americans’: Celebrity and her fans, 1955<\/p><\/div>\n

Making an American’s profile<\/b><\/p>\n

The result of these trips is the famous photo book “Americans” that was released in 1958 in France and a year later – in the United States. The author of the text for the American edition was made by the photographer’s friend, writer Jack Kerouac. His novel “On the Road” is in many ways similar to Frank’s attempt to show the unexplored, strange, dangerous world of post-war America.<\/span><\/p>\n

While driving his Ford, Robert Frank took 28 thousand shots. The book includes eighty-three only. It became the most revolutionary project of the mid-century: “Americans” was both idolized and hated.<\/span><\/p>\n

\"family

Family in the car, 1955<\/p><\/div>\n

Robert Frank wrote a short letter trying to respond to the criticism and explaining his position. “I tried to show the profile of America. The point of view is personal. Therefore many aspects of American life and society have been ignored by me. Opinion often contains criticism. But criticism is born out of love. It is important for the photographer to see what is hidden to others – maybe this is a look full of hope or sadness.”<\/span><\/p>\n

Frank’s images followed the social realism of Weegee’s works<\/a>, sometimes emphasizing the inequality of US society.<\/p>\n

\"man

Man prostitution, NYC, 1955<\/p><\/div>\n

I’ll be back in ten minutes<\/b><\/p>\n

“The Americans” turned out to be a massive photo monument to harsh times, a brand new format of a documentary. The book was a messenger of a new-born trend in American photography – edgy, showing life without embellishment.<\/span><\/p>\n

Like Frank used to say, “People that look at my pictures have to feel the same way that I felt when pressing on the shutter\u2026 It’s like to read the poem twice”.<\/span><\/p>\n

\"Picnic

Picnic in Cleveland, 1955<\/p><\/div>\n

Frank’s photos became a how-to manual for the new generation of American photographers. Robert Frank showed them the way of the solely published photobooks, expanding the limitations of cooperation with just magazines and newspapers.<\/span><\/p>\n

Robert Frank had massive success, and he tried to escape it. He did not want to become a canonical American photographer. He worked in moviemaking, filming The Rolling Stones tour in ‘Cocksucker Blues’ movie. He married for a second time and went through the tragedy of the death of his daughter, who died in an airplane crash.<\/span><\/p>\n

\"Cleveland

Robert Frank ‘Americans’: Cleveland Central Park, 1955<\/p><\/div>\n

When Robert Frank was leaving his homeplace before the four-year travel to Canada, he put a sign on his doors: “I’ll be back in ten minutes.” As if he was staying somewhere nearby. He never returned to his apartment in NYC and died on September 9, 2019, in Canada, where he had a house at the seaside. But he is still somewhere nearby – in books and photographs, exhibitions and textbooks.<\/span><\/p>\n

\"parade

Parade in New Jersey, 1955<\/p><\/div>\n

\"Parade

Robert Frank ‘Americans’: ‘Hiding behind the American dream.’<\/p><\/div>\n

\"Couple

Couple in the streets of LA, 1956<\/p><\/div>\n

\"Bikers

Robert Frank ‘Americans’: Bikers of the NYC, 1955<\/p><\/div>\n

\"The

The streetlife of the NY kids, 1955<\/p><\/div>\n

\"A

A cowboy in Miami, 1955<\/p><\/div>\n

\"miners

Miners in the line for the salary, 1956<\/p><\/div>\n

\"Men's

Men’s toilet room, 1956<\/p><\/div>\n

\"The

The kissing couple, LA, 1956<\/p><\/div>\n

\"A

Robert Frank ‘Americans’: A girl in a tiara, 1955<\/p><\/div>\n

\"'Congressmen'

‘The congressmen’. This photo became one of the symbols of the black rights movement.<\/p><\/div>\n

\"Twins

Twins in Cleveland, 1955<\/p><\/div>\n

\"A

Robert Frank ‘Americans’: A cowboy in the streets of NYC, 1956<\/p><\/div>\n

\"Robert

Robert Frank ‘Americans’: ‘Waiting for an American dream.’<\/p><\/div>\n

\"Robert<\/p>\n

\"Marilyn

A boy reading a newspaper with news about Marilyn Monroe death<\/p><\/div>\n

\"Black

Black couple on a Harley, 1956<\/p><\/div>\n

\"American

American woman, 1956<\/p><\/div>\n

\"black

Black Couple in Ohio, 1956<\/p><\/div>\n

\"Behind

Behind the Hollywood sign, 1956<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"

Robert Frank is one of the most glorified photographers, Hasselblad Award Winner, the important person in the photo history of the 20th…<\/p>\n","protected":false},"author":1,"featured_media":3427,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[51,95],"yoast_head":"\nHow Robert Frank created the 'Americans' - Old Pictures<\/title>\n<meta name=\"description\" content=\"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.\" \/>\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\/how-robert-frank-created-the-americans\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Robert Frank created the 'Americans' - Old Pictures\" \/>\n<meta property=\"og:description\" content=\"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/\" \/>\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-06-02T12:31:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-17T14:02:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"728\" \/>\n\t<meta property=\"og:image:height\" content=\"474\" \/>\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=\"7 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\/how-robert-frank-created-the-americans\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg\",\"contentUrl\":\"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg\",\"width\":728,\"height\":474,\"caption\":\"Trolley To New Orleans\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#webpage\",\"url\":\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/\",\"name\":\"How Robert Frank created the 'Americans' - Old Pictures\",\"isPartOf\":{\"@id\":\"https:\/\/oldpics.net\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#primaryimage\"},\"datePublished\":\"2020-06-02T12:31:26+00:00\",\"dateModified\":\"2020-06-17T14:02:20+00:00\",\"author\":{\"@id\":\"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e\"},\"description\":\"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.\",\"breadcrumb\":{\"@id\":\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#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\":\"How Robert Frank created the ‘Americans’\"}]},{\"@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":"How Robert Frank created the 'Americans' - Old Pictures","description":"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.","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\/how-robert-frank-created-the-americans\/","og_locale":"en_US","og_type":"article","og_title":"How Robert Frank created the 'Americans' - Old Pictures","og_description":"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.","og_url":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/","og_site_name":"Old Pictures","article_publisher":"https:\/\/www.facebook.com\/oldpics.net\/","article_published_time":"2020-06-02T12:31:26+00:00","article_modified_time":"2020-06-17T14:02:20+00:00","og_image":[{"width":728,"height":474,"url":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg","type":"image\/jpeg"}],"twitter_card":"summary","twitter_misc":{"Written by":"Andrew Piper","Est. reading time":"7 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\/how-robert-frank-created-the-americans\/#primaryimage","inLanguage":"en-US","url":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg","contentUrl":"https:\/\/oldpics.net\/wp-content\/uploads\/2020\/06\/New-Orlean-bus.jpg","width":728,"height":474,"caption":"Trolley To New Orleans"},{"@type":"WebPage","@id":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#webpage","url":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/","name":"How Robert Frank created the 'Americans' - Old Pictures","isPartOf":{"@id":"https:\/\/oldpics.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#primaryimage"},"datePublished":"2020-06-02T12:31:26+00:00","dateModified":"2020-06-17T14:02:20+00:00","author":{"@id":"https:\/\/oldpics.net\/#\/schema\/person\/d8c5bb049b6afec697fc0e2bdbbd298e"},"description":"The best of photos of the Robert Frank 'Americans' book and a story behind his famous travel accros the country.","breadcrumb":{"@id":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/oldpics.net\/how-robert-frank-created-the-americans\/#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":"How Robert Frank created the ‘Americans’"}]},{"@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\/3410"}],"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=3410"}],"version-history":[{"count":7,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts\/3410\/revisions"}],"predecessor-version":[{"id":3837,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/posts\/3410\/revisions\/3837"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/media\/3427"}],"wp:attachment":[{"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/media?parent=3410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/categories?post=3410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oldpics.net\/wp-json\/wp\/v2\/tags?post=3410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}