{"id":75826,"date":"2020-01-20T12:18:33","date_gmt":"2020-01-20T06:48:33","guid":{"rendered":"https:\/\/www.vskills.in\/certification\/tutorial\/?p=75826"},"modified":"2024-04-12T14:17:19","modified_gmt":"2024-04-12T08:47:19","slug":"setting-up-the-cache","status":"publish","type":"page","link":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/","title":{"rendered":"Setting Up the Cache"},"content":{"rendered":"<p>The cache system requires a small amount of setup. Namely, you have to tell it where your cached data should live; whether in a database, on the filesystem or directly in memory. This is an important decision that affects your cache\u2019s performance.<\/p>\n<p>Your cache preference goes in the CACHES setting in your settings file.<\/p>\n<h3>Memcached<\/h3>\n<p>The fastest, most efficient type of cache supported natively by Django, Memcached is an entirely memory-based cache server, originally developed to handle high loads at LiveJournal.com and subsequently open-sourced by Danga Interactive. It\u2019s used by sites such as Facebook and Wikipedia to reduce database access and dramatically increase site performance.<br>\nMemcached runs as a daemon and is allotted a specified amount of RAM. All it does is provide a fast interface for adding, retrieving and deleting data in the cache. All data is stored directly in memory, so there\u2019s no overhead of database or filesystem usage.<\/p>\n<p>After installing Memcached itself, you\u2019ll need to install a Memcached binding. There are several Python Memcached bindings available; the two most common are python-memcached and pylibmc. To use Memcached with Django:<\/p>\n<ul>\n<li>&nbsp;Set BACKEND to django.core.cache.backends.memcached.MemcachedCache or django.core.cache.backends.memcached.PyLibMCCache (depending on your chosen memcached binding)<\/li>\n<li>Set LOCATION to ip:port values, where ip is the IP address of the Memcached daemon and port is the port on which Memcached is running, or to a unix:path value, where path is the path to a Memcached Unix socket file.<\/li>\n<\/ul>\n<p>In this example, Memcached is running on localhost (127.0.0.1) port 11211, using the python-memcached binding:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.memcached.MemcachedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;127.0.0.1:11211&#8217;,<br>\n}<br>\n}<\/p>\n<p>In this example, Memcached is available through a local Unix socket file \/tmp\/memcached.sock using the python-memcached binding:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.memcached.MemcachedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;unix:\/tmp\/memcached.sock&#8217;,<br>\n}<br>\n}<\/p>\n<p>One excellent feature of Memcached is its ability to share a cache over multiple servers. This means you can run Memcached daemons on multiple machines, and the program will treat the group of machines as a single cache, without the need to duplicate cache values on each machine. To take advantage of this feature, include all server addresses in LOCATION, either separated by semicolons or as a list.<\/p>\n<p>In this example, the cache is shared over Memcached instances running on IP address 172.19.26.240 and 172.19.26.242, both on port 11211:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.memcached.MemcachedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: [<br>\n&#8216;172.19.26.240:11211&#8217;,<br>\n&#8216;172.19.26.242:11211&#8217;,<br>\n]\n}<br>\n}<\/p>\n<p>In the following example, the cache is shared over Memcached instances running on the IP addresses 172.19.26.240 (port 11211), 172.19.26.242 (port 11212), and 172.19.26.244 (port 11213):<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.memcached.MemcachedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: [<br>\n&#8216;172.19.26.240:11211&#8217;,<br>\n&#8216;172.19.26.242:11212&#8217;,<br>\n&#8216;172.19.26.244:11213&#8217;,<br>\n]\n}<br>\n}<\/p>\n<p>A final point about Memcached is that memory-based caching has a disadvantage: because the cached data is stored in memory, the data will be lost if your server crashes.<\/p>\n<p>Clearly, memory isn\u2019t intended for permanent data storage, so don\u2019t rely on memory-based caching as your only data storage. Without a doubt, none of the Django caching backends should be used for permanent storage \u2013 they\u2019re all intended to be solutions for caching, not storage \u2013 but we point this out here because memory-based caching is particularly temporary.<\/p>\n<h3>Database Caching<\/h3>\n<p>Django can store its cached data in your database. This works best if you\u2019ve got a fast, well-indexed database server. To use a database table as your cache backend:<\/p>\n<ul>\n<li>Set BACKEND to django.core.cache.backends.db.DatabaseCache<\/li>\n<li>Set LOCATION to tablename, the name of the database table. This name can be whatever you want, as long as it\u2019s a valid table name that\u2019s not already being used in your database.<\/li>\n<\/ul>\n<p>In this example, the cache table\u2019s name is my_cache_table:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.db.DatabaseCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;my_cache_table&#8217;,<br>\n}<br>\n}<\/p>\n<p><strong>Creating The Cache Table<\/strong> &#8211; Before using the database cache, you must create the cache table with this command:<br>\npython manage.py createcachetable<\/p>\n<p>This creates a table in your database that is in the proper format that Django\u2019s database-cache system expects. The name of the table is taken from LOCATION. If you are using multiple database caches, createcachetable creates one table for each cache. If you are using multiple databases, createcachetable observes the allow_migrate() method of your database routers. Like migrate, createcachetable won\u2019t touch an existing table. It will only create missing tables.<\/p>\n<p><strong>Multiple Databases<\/strong> &#8211; If you use database caching with multiple databases, you\u2019ll also need to set up routing instructions for your database cache table. For the purposes of routing, the database cache table appears as a model named CacheEntry, in an application named django_cache. This model won\u2019t appear in the models cache, but the model details can be used for routing purposes.<\/p>\n<p>For example, the following router would direct all cache read operations to cache_replica, and all write operations to cache_primary. The cache table will only be synchronized onto cache_primary:<\/p>\n<p>class CacheRouter(object):<br>\n&#8220;&#8221;&#8221;A router to control all database cache operations&#8221;&#8221;&#8221;<\/p>\n<p>def db_for_read(self, model, **hints):<br>\n# All cache read operations go to the replica<br>\nif model._meta.app_label in (&#8216;django_cache&#8217;,):<br>\nreturn &#8216;cache_replica&#8217;<br>\nreturn None<\/p>\n<p>def db_for_write(self, model, **hints):<br>\n# All cache write operations go to primary<br>\nif model._meta.app_label in (&#8216;django_cache&#8217;,):<br>\nreturn &#8216;cache_primary&#8217;<br>\nreturn None<\/p>\n<p>def allow_migrate(self, db, model):<br>\n# Only install the cache model on primary<br>\nif model._meta.app_label in (&#8216;django_cache&#8217;,):<br>\nreturn db == &#8216;cache_primary&#8217;<br>\nreturn None<\/p>\n<p>If you don\u2019t specify routing directions for the database cache model, the cache backend will use the default database. Of course, if you don\u2019t use the database cache backend, you don\u2019t need to worry about providing routing instructions for the database cache model.<\/p>\n<h3>Filesystem Caching<\/h3>\n<p>The file-based backend serializes and stores each cache value as a separate file. To use this backend set BACKEND to &#8216;django.core.cache.backends.filebased.FileBasedCache&#8217; and LOCATION to a suitable directory.<\/p>\n<p>For example, to store cached data in \/var\/tmp\/django_cache, use this setting:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.filebased.FileBasedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;\/var\/tmp\/django_cache&#8217;,<br>\n}<br>\n}<\/p>\n<p>If you\u2019re on Windows, put the drive letter at the beginning of the path, like this:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.filebased.FileBasedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;c:\/foo\/bar&#8217;,<br>\n}<br>\n}<\/p>\n<p>The directory path should be absolute \u2013 that is, it should start at the root of your filesystem. It doesn\u2019t matter whether you put a slash at the end of the setting. Make sure the directory pointed to by this setting exists and is readable and writable by the system user under which your Web server runs. Continuing the above example, if your server runs as the user apache, make sure the directory \/var\/tmp\/django_cache exists and is readable and writable by the user apache.<\/p>\n<h3>Local-Memory Caching<\/h3>\n<p>This is the default cache if another is not specified in your settings file. If you want the speed advantages of in-memory caching but don\u2019t have the capability of running Memcached, consider the local-memory cache backend. To use it, set BACKEND to django.core.cache.backends.locmem.LocMemCache. For example:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.locmem.LocMemCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;unique-snowflake&#8217;<br>\n}<br>\n}<\/p>\n<p>The cache LOCATION is used to identify individual memory stores. If you only have one locmem cache, you can omit the LOCATION; however, if you have more than one local memory cache, you will need to assign a name to at least one of them in order to keep them separate.<\/p>\n<p>Note that each process will have its own private cache instance, which means no cross-process caching is possible. This obviously also means the local memory cache isn\u2019t particularly memory-efficient, so it\u2019s probably not a good choice for production environments. It\u2019s nice for development.<\/p>\n<h3>Dummy Caching (For Development)<\/h3>\n<p>Finally, Django comes with a dummy cache that doesn\u2019t actually cache \u2013 it just implements the cache interface without doing anything. This is useful if you have a production site that uses heavy-duty caching in various places but a development\/test environment where you don\u2019t want to cache and don\u2019t want to have to change your code to special-case the latter. To activate dummy caching, set BACKEND like so:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.dummy.DummyCache&#8217;,<br>\n}<br>\n}<\/p>\n<h3>Using A Custom Cache Backend<\/h3>\n<p>While Django includes support for a number of cache backends out-of-the-box, sometimes you might want to use a customized cache backend. To use an external cache backend with Django, use the Python import path as the BACKEND of the CACHES setting, like so:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;path.to.backend&#8217;,<br>\n}<br>\n}<\/p>\n<p>If you\u2019re building your own backend, you can use the standard cache backends as reference implementations. You\u2019ll find the code in the django\/core\/cache\/backends\/ directory of the Django source.<br>\nWithout a really compelling reason, such as a host that doesn\u2019t support them, you should stick to the cache backends included with Django. They\u2019ve been well-tested and are easy to use.<br>\nCache Arguments<br>\nEach cache backend can be given additional arguments to control caching behavior. These arguments are provided as additional keys in the CACHES setting. Valid arguments are as follows:<\/p>\n<ul>\n<li>TIMEOUT: The default timeout, in seconds, to use for the cache. This argument defaults to 300 seconds (5 minutes). You can set TIMEOUT to None so that, by default, cache keys never expire. A value of 0 causes keys to immediately expire (effectively don\u2019t cache).<\/li>\n<li>OPTIONS: Any options that should be passed to the cache backend. The list of valid options will vary with each backend, and cache backends backed by a third-party library will pass their options directly to the underlying cache library.<\/li>\n<li>Cache backends that implement their own culling strategy (i.e., the locmem, filesystem and database backends) will honor the following options:<\/li>\n<li>MAX_ENTRIES: The maximum number of entries allowed in the cache before old values are deleted. This argument defaults to 300.<\/li>\n<li>CULL_FREQUENCY: The fraction of entries that are culled when MAX_ENTRIES is reached. The actual ratio is 1 \/ CULL_FREQUENCY, so set CULL_FREQUENCY to 2 to cull half the entries when MAX_ENTRIES is reached. This argument should be an integer and defaults to 3.A value of 0 for CULL_FREQUENCY means that the entire cache will be dumped when MAX_ENTRIES is reached. On some backends (database in particular) this makes culling much faster at the expense of more cache misses.<\/li>\n<li>KEY_PREFIX: A string that will be automatically included (prepended by default) to all cache keys used by the Django server.<\/li>\n<li>VERSION: The default version number for cache keys generated by the Django server.<\/li>\n<li>KEY_FUNCTION: A string containing a dotted path to a function that defines how to compose a prefix, version and key into a final cache key.<\/li>\n<\/ul>\n<p>In this example, a filesystem backend is being configured with a timeout of 60 seconds, and a maximum capacity of 1000 items:<\/p>\n<p>CACHES = {<br>\n&#8216;default&#8217;: {<br>\n&#8216;BACKEND&#8217;: &#8216;django.core.cache.backends.filebased.FileBasedCache&#8217;,<br>\n&#8216;LOCATION&#8217;: &#8216;\/var\/tmp\/django_cache&#8217;,<br>\n&#8216;TIMEOUT&#8217;: 60,<br>\n&#8216;OPTIONS&#8217;: {&#8216;MAX_ENTRIES&#8217;: 1000}<br>\n}<br>\n}<\/p>\n\n\n<p><a href=\"https:\/\/www.vskills.in\/certification\/tutorial\/certified-django-developer\/\" target=\"_blank\" rel=\"noreferrer noopener\">Back to Tutorial<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The cache system requires a small amount of setup. Namely, you have to tell it where your cached data should live; whether in a database, on the filesystem or directly in memory. This is an important decision that affects your cache\u2019s performance. Your cache preference goes in the CACHES setting in your settings file. Memcached&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[8655],"tags":[8825],"class_list":["post-75826","page","type-page","status-publish","hentry","category-django-web-development","tag-setting-up-the-cache"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Setting Up the Cache - Tutorial<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Setting Up the Cache - Tutorial\" \/>\n<meta property=\"og:description\" content=\"The cache system requires a small amount of setup. Namely, you have to tell it where your cached data should live; whether in a database, on the filesystem or directly in memory. This is an important decision that affects your cache\u2019s performance. Your cache preference goes in the CACHES setting in your settings file. Memcached...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutorial\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/vskills.in\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-12T08:47:19+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/\",\"name\":\"Setting Up the Cache - Tutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\"},\"datePublished\":\"2020-01-20T06:48:33+00:00\",\"dateModified\":\"2024-04-12T08:47:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Setting Up the Cache\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"name\":\"Tutorial\",\"description\":\"Vskills - A initiative in elearning and certification\",\"publisher\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\",\"name\":\"Vskills\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"contentUrl\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"width\":73,\"height\":55,\"caption\":\"Vskills\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/vskills.in\/\",\"https:\/\/x.com\/vskills_in\",\"https:\/\/www.linkedin.com\/company-beta\/1371554\/\",\"https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Setting Up the Cache - Tutorial","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:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/","og_locale":"en_US","og_type":"article","og_title":"Setting Up the Cache - Tutorial","og_description":"The cache system requires a small amount of setup. Namely, you have to tell it where your cached data should live; whether in a database, on the filesystem or directly in memory. This is an important decision that affects your cache\u2019s performance. Your cache preference goes in the CACHES setting in your settings file. Memcached...","og_url":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/","og_site_name":"Tutorial","article_publisher":"https:\/\/www.facebook.com\/vskills.in\/","article_modified_time":"2024-04-12T08:47:19+00:00","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/","name":"Setting Up the Cache - Tutorial","isPartOf":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website"},"datePublished":"2020-01-20T06:48:33+00:00","dateModified":"2024-04-12T08:47:19+00:00","breadcrumb":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/setting-up-the-cache\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vskills.in\/certification\/tutorial\/"},{"@type":"ListItem","position":2,"name":"Setting Up the Cache"}]},{"@type":"WebSite","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","name":"Tutorial","description":"Vskills - A initiative in elearning and certification","publisher":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization","name":"Vskills","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","contentUrl":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","width":73,"height":55,"caption":"Vskills"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/vskills.in\/","https:\/\/x.com\/vskills_in","https:\/\/www.linkedin.com\/company-beta\/1371554\/","https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw"]}]}},"_links":{"self":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/75826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/comments?post=75826"}],"version-history":[{"count":4,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/75826\/revisions"}],"predecessor-version":[{"id":83382,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/75826\/revisions\/83382"}],"wp:attachment":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/media?parent=75826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/categories?post=75826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/tags?post=75826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}